1 // 读取json文件 2function getJsonData(fileName,callback) { //path:路径 3 plus.io.requestFileSystem( 4 plus.io.PUBLIC_DOWNLOADS, // 文件系统中的根目录 5 fs => { 6 // 创建或打开文件, fs.root是根目录操作对象,直接fs表示当前操作对象 7 fs.root.getFile(fileName, { 8 create: true // 文件不存在则创建 9 }, fileEntry => { 10 // 文件在手机中的路径 11 console.log('文件在手机中的路径', fileEntry.fullPath) 12 fileEntry.file(function(file) { 13 var fileReader = new plus.io.FileReader(); 14 console.log("getFile:" + JSON.stringify(file)); 15 fileReader.readAsText(file, "utf-8") 16 fileReader.onloadend = function(res) { //读取文件内容成功后的回调事件 17 //res.target.result读取到的文件内容信息 18 console.log('最后读取文件内容是=======', res.target.result) 19 callback(res.target.result) 20 } 21 }); 22 }, e => { 23 console.log('报错111', "getFile failed: " + e.message); 24 }); 25 }, 26 27 e => { 28 console.log('报错222', e.message); 29 } 30); 31}; 32// 写入josn文件 33function changeData(fileName,fileInfo,callback) { //参数1:上传路径,参数2:seek方法可设置文件操作指定位置,参数3:写入的json数据 34 // 请求本地文件系统对象 35 plus.io.requestFileSystem( 36 plus.io.PUBLIC_DOWNLOADS, // 文件系统中的根目录 37 fs => { 38 // 创建或打开文件, fs.root是根目录操作对象,直接fs表示当前操作对象 39 fs.root.getFile(fileName, { 40 create: true // 文件不存在则创建 41 }, fileEntry => { 42 // 文件在手机中的路径 43 // console.log('最后文件在手机中的路径========', fileEntry.fullPath) 44 fileEntry.createWriter(writer => { 45 // 写入文件成功完成的回调函数 46 writer.onwrite = e => { 47 console.log("写入数据成功"); 48 callback(true) 49 }; 50 // 写入数据 51 writer.write(JSON.stringify(fileInfo)); 52 }) 53 }, e => { 54 callback(false) 55 console.log('报错111', "getFile failed: " + e.message); 56 }); 57 }, 58 e => { 59 console.log('报错222', e.message); 60 callback(false) 61 } 62 ); 63} 64 65async function saveFile(url, file, newfilename) { 66 let c = await creatDirs(url) 67 let isokm = moveDirectyOrFile(file, url + "/", newfilename); 68 return isokm 69} 70//循环创建目录 url:"_doc/...." _doc开头 71async function creatDirs(url) { 72 let urllist = url.split("/"); 73 console.log(urllist) 74 //创建文件夹 75 let u = ""; 76 for (let i = 0; i < urllist.length - 1; i++) { 77 let j = i; 78 if (i == 0) { 79 u = urllist[i]; 80 } else { 81 u = u + "/" + urllist[i]; 82 } 83 console.log(i + "-------------------") 84 console.log(u) 85 console.log(urllist[j + 1]) 86 await CreateNewDir(u, urllist[j + 1]); 87 } 88} 89//重命名目录或文件名 90function moveDirectyOrFile(srcUrl, dstUrl, newName) { //srcUrl需要移动的目录或文件,dstUrl要移动到的目标目录(父级) 91 plus.io.resolveLocalFileSystemURL(srcUrl, function(srcEntry) { 92 //console.log(111) 93 plus.io.resolveLocalFileSystemURL(dstUrl, function(dstEntry) { 94 //console.log(222) 95 if (srcEntry.isDirectory) { 96 //console.log(33) 97 srcEntry.moveTo(dstEntry, newName, function(entry) { 98 //console.log("New Path: " + entry.fullPath); 99 return true; 100 }, function(e) { 101 return e; 102 //console.log(e.message); 103 }); 104 } else { 105 srcEntry.moveTo(dstEntry, newName, function(entry) { 106 //console.log("New Path: " + entry.fullPath); 107 return true; 108 }, function(e) { 109 return e; 110 //console.log(e.message); 111 }); 112 } 113 }, function(e) { 114 uni.showToast({ 115 title: '获取目标目录失败:' + e.message, 116 duration: 2000, 117 icon: 'none' 118 }); 119 }); 120 }, function(e) { 121 uni.showToast({ 122 title: '获取目录失败:' + e.message, 123 duration: 2000, 124 icon: 'none' 125 }); 126 }); 127} 128 129//创建一个新目录 130function CreateNewDir(url, dirName) { 131 //url值可支持相对路径URL、本地路径URL 132 return new Promise((resolver, reject) => { 133 plus.io.resolveLocalFileSystemURL(url, function(entry) { 134 entry.getDirectory(dirName, { 135 create: true, 136 exclusive: false 137 }, function(dir) { 138 resolver(true) 139 }, function(error) { 140 reject(error.message) 141 uni.showToast({ 142 title: dirName + '目录创建失败:' + error.message, 143 duration: 2000, 144 icon: 'none' 145 }); 146 }); 147 }, function(e) { 148 reject(error.message) 149 uni.showToast({ 150 title: '获取目录失败:' + e.message, 151 duration: 2000, 152 icon: 'none' 153 }); 154 }); 155 }) 156} 157 158 159function copyFileTo(url, newUrl, dirName, newName) { 160 if (url.length >= 7 && "file://" == url.substring(0, 7)) { 161 url = url.substring(7) 162 } 163 let tempUrl = url.substring(0, url.lastIndexOf('/')); 164 let addUrl = newUrl + '/' + dirName; 165 console.log(addUrl, tempUrl) 166 if (addUrl == tempUrl) { 167 return url; 168 } 169 console.log(newUrl, dirName, newName) 170 return new Promise((resolve, reject) => { 171 plus.io.resolveLocalFileSystemURL(url, async (entry) => { 172 if (entry.isFile) { 173 let c = await CreateNewDir(newUrl, dirName) 174 let u = await getDirsys(addUrl) 175 entry.copyTo(u, newName, en => { 176 resolve(en.fullPath); 177 }, e => { 178 console.log(e); 179 reject('错误:复制时出现错误') 180 uni.showModal({ 181 title: "错误", 182 content: "复制时出现错误" 183 }) 184 }) 185 } else { 186 reject('错误:路径必须是文件') 187 uni.showModal({ 188 title: "错误", 189 content: "路径必须是文件" 190 }) 191 } 192 }, (e) => { 193 console.log(e); 194 reject(e) 195 uni.showModal({ 196 title: "错误", 197 content: "打开文件系统时出错" 198 }) 199 }); 200 }) 201} 202//获取目录对象 203function getDirsys(url) { 204 return new Promise((resolve, reject) => { 205 plus.io.resolveLocalFileSystemURL(url, (entry) => { 206 resolve(entry) 207 }, (e) => { 208 reject(e) 209 console.log(e); 210 }); 211 }) 212} 213//将这些方法暴露出去 214export { 215 getJsonData, 216 changeData, 217 saveFile, 218 creatDirs, 219 moveDirectyOrFile, 220 copyFileTo, 221 getDirsys, 222};
uniapp-app存储读取文件

梦
2024-03-01
1704 0 0
点赞
收藏
评论区
加载中...