// 读取json文件 export function getJsonData(path) { //path:路径 return new Promise(resolve => { //文件读写是一个异步请求 用promise包起来方便使用时的async+await plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, fs => { //请求文件系统 fs.root.getFile( path, { //请求地址文件 '/storage/emulated/0/config.txt'为根目录 '/config.txt'为/storage/Android/data/io.dcloud.HBuilder(包名)/documents/config.js create: true //当文件不存在时创建 }, fileEntry => { fileEntry.file(function(file) { let fileReader = new plus.io .FileReader(); //new一个可以用来读取文件的对象fileReader fileReader.readAsText(file, "utf-8"); //读文件的格式 fileReader.onerror = e => { //读文件失败 // plus.nativeUI.toast("获取文件失败,请重启应用", { // background: "rgba(255, 255, 255, 0.6)", // }); return; }; fileReader.onload = e => { //读文件成功 let txtData = e.target.result; resolve(txtData); //回调函数内的值想返回到函数外部 就用promise+resolve来返回出去 }; }); }, error => { // plus.nativeUI.toast("获取文件失败,请重启应用", { // background: "rgba(255, 255, 255, 0.6)", // }); return; }); }, e => { // plus.nativeUI.toast("请求系统失败,请重启应用", { // background: "rgba(255, 255, 255, 0.6)", // }); return; } ); }); }; // 写入josn文件 export function changeData(path, seek, writeData) { //参数1:上传路径,参数2:seek方法可设置文件操作指定位置,参数3:写入的json数据 return new Promise(resolve => { // resolveLocalFileSystemURL requestFileSystem PUBLIC_DOCUMENTS PRIVATE_DOC plus.io.requestFileSystem(plus.io.PRIVATE_DOC, fs => { fs.root.getFile(path, { create: true }, fileEntry => { fileEntry.file(file => { fileEntry.createWriter(writer => { // plus.nativeUI.showWaiting("正在保存信息"); writer.seek(seek); //覆盖文件 const writeDataTemp = JSON.stringify(writeData, null, "\r").replace(/[\r]/g, ""); writer.write(writeDataTemp); // 整个文件重写 writer.onerror = function() { plus.nativeUI.closeWaiting(); // plus.nativeUI.toast("修改信息失败,请重新操作", { // background: "rgba(255, 255, 255, 0.6)", // }); return; }; writer.onsuccess = function() { //填写文件成功 plus.nativeUI.closeWaiting(); // plus.nativeUI.toast("保存成功", { // background: "rgba(255, 255, 255, 0.6)", // }); resolve(true); }; }, error => { // plus.nativeUI.toast("保存文件失败,请重新操作", { // background: "#ffa38c", // }); return; }); }); }, error => { // plus.nativeUI.toast("保存文件失败,请重新操作", { // background: "#ffa38c", // }); return; } ); }, e => { // plus.nativeUI.toast("请求系统失败,请重新操作", { // background: "#ffa38c", // }); return; }); }); } /** * 储存文件到指定的地址:把一个文件移动到另外一个位置 剪切文件 重命名文件 * @param {String} url 新的地址 _doc/ 开头 * @param {String} file 原文件地址 * @param {String} newfilename 新的文件名 */ // export async function saveFile(url, file, newfilename) { // let c = await creatDirs(url) // let isokm = moveDirectyOrFile(file, url + "/", newfilename); // return isokm // } //循环创建目录 url:"_doc/...." _doc开头 // export async function creatDirs(url) { // let urllist = url.split("/"); // //创建文件夹 // let u = ""; // for (let i = 0; i < urllist.length - 1; i++) { // let j = i; // if (i == 0) { // u = urllist[i]; // } else { // u = u + "/" + urllist[i]; // } // await CreateNewDir(u, urllist[j + 1]); // } // } //重命名目录或文件名 // export function moveDirectyOrFile(srcUrl, dstUrl, newName) { //srcUrl需要移动的目录或文件,dstUrl要移动到的目标目录(父级) // plus.io.resolveLocalFileSystemURL(srcUrl, function(srcEntry) { // //console.log(111) // plus.io.resolveLocalFileSystemURL(dstUrl, function(dstEntry) { // //console.log(222) // if (srcEntry.isDirectory) { // //console.log(33) // srcEntry.moveTo(dstEntry, newName, function(entry) { // //console.log("New Path: " + entry.fullPath); // return true; // }, function(e) { // return e; // //console.log(e.message); // }); // } else { // srcEntry.moveTo(dstEntry, newName, function(entry) { // //console.log("New Path: " + entry.fullPath); // return true; // }, function(e) { // return e; // //console.log(e.message); // }); // } // }, function(e) { // uni.showToast({ // title: '获取目标目录失败:' + e.message, // duration: 2000, // icon: 'none' // }); // }); // }, function(e) { // uni.showToast({ // title: '获取目录失败:' + e.message, // duration: 2000, // icon: 'none' // }); // }); // } //创建一个新目录 export function CreateNewDir(url, dirName) { //url值可支持相对路径URL、本地路径URL return new Promise((resolver, reject) => { plus.io.resolveLocalFileSystemURL(url, function(entry) { entry.getDirectory(dirName, { create: true, exclusive: false }, function(dir) { resolver(true) // uni.showToast({ // title: dirName + '目录创建成功:' + dir.message, // duration: 20000, // icon: 'none' // }); }, function(error) { reject(false) // uni.showToast({ // title: dirName + '目录创建失败:' + error.message, // duration: 2000, // icon: 'none' // }); }); }, function(e) { reject(false) // uni.showToast({ // title: '获取目录失败:' + e.message, // duration: 2000, // icon: 'none' // }); }); }) } /** * 复制文件 * @param {String} url 文件地址,文件路径,最好是相对路径 url:"_doc/...." _doc开头 * @param {String} newUrl 目标目录,最好是相对路径 url:"_doc/...." _doc开头 * @param {String} newName 拷贝后的文件名称,默认为原始文件名称 */ // export function copyFileTo(url, newUrl, dirName, newName) { // if (url.length >= 7 && "file://" == url.substring(0, 7)) { // url = url.substring(7) // } // let tempUrl = url.substring(0, url.lastIndexOf('/')); // let addUrl = newUrl + '/' + dirName; // if (addUrl == tempUrl) { // return url; // } // return new Promise((resolve, reject) => { // plus.io.resolveLocalFileSystemURL(url, async (entry) => { // if (entry.isFile) { // let c = await CreateNewDir(newUrl, dirName) // let u = await getDirsys(addUrl) // entry.copyTo(u, newName, en => { // resolve(en.fullPath); // }, e => { // reject('错误:复制时出现错误') // uni.showModal({ // title: "错误", // content: "复制时出现错误" // }) // }) // } else { // reject('错误:路径必须是文件') // uni.showModal({ // title: "错误", // content: "路径必须是文件" // }) // } // }, (e) => { // reject(e) // uni.showModal({ // title: "错误", // content: "打开文件系统时出错" // }) // }); // }) // } //获取目录对象 // export function getDirsys(url) { // return new Promise((resolve, reject) => { // plus.io.resolveLocalFileSystemURL(url, (entry) => { // resolve(entry) // }, (e) => { // reject(e) // }); // }) // } //将这些方法暴露出去