2***@qq.com
2***@qq.com
  • 发布:2021-06-06 15:49
  • 更新:2021-06-06 15:49
  • 阅读:2444

分享下安卓下文件和目录的读取,写入,移动,删除

分类:uni-app

分享下安卓下目录和文件读取
注意需要安装排序库natsort.min.js,和 vm.$u.date 时间函数,可以用自己的函数代替

// #ifdef APP-PLUS  
//只能用于安卓 导入java类  
let File = plus.android.importClass("java.io.File");  
let BufferedReader = plus.android.importClass("java.io.BufferedReader");  
let FileReader = plus.android.importClass("java.io.FileReader");  
let FileWriter = plus.android.importClass("java.io.FileWriter");  
// 安卓11及一下可以在任意地方创建文件夹  /sdcard/自己的文件夹/1.txt  
// 安卓11(百度安卓目录限制) /storage/emulated/0/Download/自己的文件夹/1.txt  

//新建文件 newFiles("/sdcard/修止符/配置.json")  
    let newFiles = (name) => {  
        let directory = new File(name);  
        if (!directory.exists()) {  
            return directory.mkdirs(); //不存在创建目录  
        }  
        return false;  
    };  
//读取txt文件 readFile ("/sdcard/修止符/配置.json")  
    let readFile = (fileName) => {  
        let readFr = new File(fileName);  
        try {  
            let reader = new BufferedReader(new FileReader(readFr));  
            let txt;  
            let retxt = '';  
            while (true) {  
                txt = reader.readLine(); //读取文件  
                if (txt == null) {  
                    break;  
                }  
                retxt = retxt + '\r\n' + txt;  
            }  
            return retxt;  
        } catch (e) {  
            console.log(e)  
            return '';  
        }  
    };  
//写文件 whiteFile("/sdcard/修止符/配置.json",{"主键":"值"})  
    let whiteFile = (fileName, res) => {  
        res = res ? JSON.stringify(res) : ''; //对象转换为json文本  
        try {  
            //不加根目录创建文件(即用相对地址)的话directory.exists()这个判断一值都是false  
            let n = fileName.lastIndexOf("/");  
            if (n != -1) {  
                let fileDirs = fileName.substring(0, n);  
                let directory = new File(fileDirs);  
                if (!directory.exists()) {  
                    directory.mkdirs(); //不存在创建目录  
                }  
            }  
            let file = new File(fileName);  
            if (!file.exists()) {  
                file.createNewFile(); //创建文件  
            }  
            let fos = new FileWriter(fileName, false);  
            fos.write(res);  
            fos.close();  
            return true;  
        } catch (e) {  
            console.log(e);  
            return false;  
        }  
        return false;  
    };  
//删除文件或文件夹 deleteFile  ("/sdcard/修止符/待删除/配置.json")  
    let deleteFile = (fileName) => {  
        console.log(fileName);  
        let file = new File(fileName.replace('//', '/'));  
        if (file.isFile() && file.exists()) {  
            return file.delete();  
        } else if (file.isDirectory()) {  
            let flag = true;  
            let files = file.listFiles();  
            let lenI = files.length  
            for (let i = 0; i < lenI; i++) {  
                //删除子目录和文件  
                flag = deleteFile(files[i].getAbsolutePath());  
                if (!flag) break;  
            }  
            if (!flag) return false;  
            //删除当前空目录  
            return file.delete();  
        }  
    };  
//移动文件 moveFile ("/sdcard/修止符/待删除/配置.json","/sdcard/修止符/配置.json")  
    let moveFile = (oldfile, newfile) => {  
        let n = newfile.lastIndexOf("/");  
        if (n != -1) {  
            let fileDirs = newfile.substring(0, n);  
            let directory = new File(fileDirs);  
            if (!directory.exists()) {  
                directory.mkdirs(); //不存在创建目录  
            }  
        }  
        let file = new File(oldfile);  
        let nfile = new File(newfile);  
        return file.renameTo(nfile);  
    };  
//读取目录  readFileList ("/sdcard/修止符/")   注意需要安装排序库natsort.min.js, vm.$u.date 时间函数  
    let readFileList = (fileName) => {  
        let directory;  
        let path = vm.vuex_xzfdir;  
        let empty = vm.$u.test.isEmpty(fileName)  
        if (empty) {  
            directory = new File(vm.vuex_xzfdir);  
        } else {  
            path = fileName;  
            directory = new File(path);  
        }  
        if (!directory.exists()) {  
            directory.mkdirs();  
        }  
        let files = directory.listFiles();  
        //对文件和文件夹进行分类  
        let lenI = files.length  
        let folderArr = [];  
        let fileArr = [];  
        for (let i = 0; i < lenI; ++i) {  
            if (files[i].isFile()) {  
                fileArr.push({  
                    id: i,  
                    show: false,  
                    icon: 'file-text',  
                    path: path,  
                    fileName: files[i].getName(),  
                    CreationTime: vm.$u.date(new Date(files[i].lastModified()), 'yyyy年mm月dd日 hh时MM分ss秒')  
                });  
            } else {  
                folderArr.push({  
                    id: i,  
                    show: false,  
                    icon: 'list-dot',  
                    path: path,  
                    fileName: files[i].getName(),  
                    CreationTime: vm.$u.date(new Date(files[i].lastModified()), 'yyyy年mm月dd日 hh时MM分ss秒')  
                });  
            }  
        }  
        //对文件进行排序 需要安装排序库natsort.min.js  
        let sorter = natsort({  
            desc: vm.vuex_desc  
        });  
        fileArr.sort((a, b) => {  
            return sorter(a.fileName, b.fileName);  
        });  
        folderArr.sort((a, b) => {  
            return sorter(a.fileName, b.fileName);  
        })  
        let resultArr = folderArr.concat(fileArr);  
        return resultArr;  
    }  
    // #endif  
0 关注 分享

要回复文章请先登录注册