文件/文件夹操作(IO操作)学习笔记

发表于 2020-07-10 11:53:48
阅读 29

介绍

介绍

福哥整理了APP里面操作文件/文件夹的方法,今天分享一下

福哥封装了一个对象 TFIO,包括了常用的功能

  • 创建文件夹

  • 写文件

  • 读文件

  • 判断类型

  • 删除文件

  • 删除文件夹

教程

TFIOItem

福哥建立了一个IOItem用来保存遍历元素

class TFIOItem{
    private String name;
    private String extension;
    private String absPath;

    public TFIOItem(){

    }

    public void Set(String fileName, String fileAbsPath){
        Integer fep, fnp;

        absPath = fileAbsPath;
        name = fileName;
        fep = name.lastIndexOf(".");
        extension = (fep != -1) ? name.substring(fep) : null ;
    }

    public String GetName(){

        return name;
    }

    public String GetExtension(){

        return extension;
    }

    public String GetAbsPath(){

        return absPath;
    }
}

TFIO

福哥建立了一个TFIO对象,用来操作文件/文件夹

public class TFIO {
    private TFIOItem[] items;

    public TFIO(){

    }

    protected void OnLoadItem(TFIOItem item){

    }

    public Boolean IsImage(Integer idx){
        String fileExt;

        fileExt = items[idx].GetExtension().toLowerCase();
        if(fileExt.equals(".jpg") || fileExt.equals(".png") || fileExt.equals(".gif") || fileExt.equals(".bmp") || fileExt.equals(".jpeg") || fileExt.equals(".pjpeg")){

            return true;
        }

        return false;
    }

    public Boolean IsDirectory(String absPath){
        File dir = new File(absPath);

        return (dir.exists() && dir.isDirectory());
    }

    public Boolean IsFile(String absPath){
        File file = new File(absPath);

        return (file.exists() && file.isFile());
    }

    public TFIOItem GetItem(Integer idx){

        return items[idx];
    }

    public TFIOItem[] GetItems(){

        return items;
    }

    public Integer GetCount(){

        return (items != null) ? items.length : 0 ;
    }

    public Boolean CreateDirectory(String absDirPath){
        File dir;

        dir = new File(absDirPath);
        dir.mkdirs();

        return dir.isDirectory();
    }

    public Boolean RemoveDirectory(String absDirPath){
        File dir;

        dir = new File(absDirPath);

        return dir.delete();
    }

    public Boolean RemoveFile(String absFilePath){
        File file;

        file = new File(absFilePath);

        return file.delete();
    }

    public String GetContents(String absFilePath){
        BufferedReader reader;
        String line, contents;

        try {
            reader = new BufferedReader(new FileReader(absFilePath));
            contents = "";
            while ((line = reader.readLine()) != null) {
                contents += line;
            }
            reader.close();

            return contents;
        }
        catch (Exception e){
            e.printStackTrace();
        }

        return null;
    }

    public Integer PutContents(String absFilePath, String contents){
        FileOutputStream fileWriter;

        try {
            fileWriter = new FileOutputStream(absFilePath);
            fileWriter.write(contents.getBytes());
            fileWriter.flush();
            fileWriter.close();

            return contents.length();
        }
        catch (Exception e){
            e.printStackTrace();
        }

        return 0;
    }

    public Integer LoadDirectories(String rootDirAbsPath){
        File dir;
        Integer i, l, fl;

        dir = new File(rootDirAbsPath);
        File[] subFile = dir.listFiles();
        if(subFile != null
            && subFile.length > 0){
            l = subFile.length;
            fl = 0;

            // count dirs
            for (i = 0; i < l; i++) {
                if (subFile[i].isDirectory()) {
                    fl++;
                }
            }
            if(fl > 0){
                items = new TFIOItem[fl];
                // save dirs
                fl = 0;
                for(i=0;i<l;i++){
                    if(subFile[i].isDirectory()){
                        items[fl] = new TFIOItem();
                        items[fl].Set(subFile[i].getName(), subFile[i].getAbsolutePath());
                        OnLoadItem(items[fl]);
                        fl ++;
                    }
                }

                return fl;
            }
        }

        return 0;
    }

    public Integer LoadFiles(String rootDirAbsPath){
        File dir;
        Integer i, l, fl;

        dir = new File(rootDirAbsPath);
        File[] subFile = dir.listFiles();
        if(subFile != null
            && subFile.length > 0){
            l = subFile.length;
            fl = 0;

            // count dirs
            for (i = 0; i < l; i++) {
                if (subFile[i].isFile()) {
                    fl++;
                }
            }
            if(fl > 0){
                items = new TFIOItem[fl];
                // save dirs
                fl = 0;
                for(i=0;i<l;i++){
                    if(subFile[i].isFile()){
                        items[fl] = new TFIOItem();
                        items[fl].Set(subFile[i].getName(), subFile[i].getAbsolutePath());
                        OnLoadItem(items[fl]);
                        fl ++;
                    }
                }

                return fl;
            }
        }

        return 0;
    }
}

使用

建立文件夹

通过 CreateDirectory 建立文件夹,通过 IsDirectory 检测结果

TFIO tfio = new TFIO();

testDir = "/mnt/sdcard/tongfu.net";
tfio.CreateDirectory(testDir);
tfio.IsDirectory(testDir);

建立文件

通过 PutContents 写入内容到文件,通过 IsFile 检测结果

TFIO tfio = new TFIO();

testFile = "/mnt/sdcard/tongfu.net/io.txt";
tfio.PutContents(testFile, "TFIO");
tfio.IsFile(testFile);
tfio.GetContents(testFile);

删除文件

通过 RemoveFile 删除文件

TFIO tfio = new TFIO();

testFile = "/mnt/sdcard/tongfu.net/io.txt";
tfio.RemoveFile(testFile);

删除文件夹

通过 RemoveDirectory 删除文件夹

TFIO tfio = new TFIO();

testFile = "/mnt/sdcard/tongfu.net/io.txt";
tfio.RemoveDirectory(testDir);