uniapp-app存储读取文件

2024-03-01

1704 0 0
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};
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

FLV文件格式

1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  

SpringBoot整合Redis乱码原因及解决方案

问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa

mysql设置时区

mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0