- 调用appendFileSync()函数保存“用户本地文件”时,在Windows端的开发工具中是可以正常保存的。然而在手机上无法保存(调用读取readFileSync()函数读取不到数据),同时查看微信文件保存的文件发现是0b大小。?
- 开发工具中能够读取保存的数据,在手机端就无法读取到文件中的数据
-结果对比:
图一 开发工具中的效果
-以下是Demo代码:
.js文件
btn_saveFile: function (){ const FileSystemManager = wx.getFileSystemManager(); if ( this .data.save_str == null ){ //把数组中的数据转换成字符串 this .data.save_str = this .obj2string( this .data.display_data_arr); FileSystemManager.writeFileSync(`${wx.env.USER_DATA_PATH}/VR_location.txt`, this .data.save_str, 'utf8' ); } else { //把数组中的数据转换成字符串 this .data.save_str = this .obj2string( this .data.display_data_arr); FileSystemManager.appendFileSync(`${wx.env.USER_DATA_PATH}/VR_location.txt`, this .data.save_str, 'utf8' ); } //把数组中的数据转换成字符串 // this.data.save_str = this.obj2string(this.data.display_data_arr); // console.log('转换:'+this.obj2string(this.data.display_data_arr)); let tt = FileSystemManager.saveFileSync( `${wx.env.USER_DATA_PATH}/VR_location.txt`, `${wx.env.USER_DATA_PATH}/VR_location.txt`); console.log( '保存路径:' + tt); wx.showToast({ title: '文件保存成功!' , icon: 'success' , duration: 1500 }); const temp = FileSystemManager.readFileSync(`${wx.env.USER_DATA_PATH}/VR_location.txt`, 'utf8' ); console.log( "文件内容:" + temp); //清除数据 // for() } |
你这里为什么要调用 saveFileSync ?
那我保存文件应该调用什么API???
在 writeFile 或者 appendFile 的时候应该已经写进去了
我知道,但是怎么感觉怪怪的?跟其他文件系统的函数不一样?都不需要保存或者关闭文件。。。。还有就是为什么在开发工具中可以但是在手机上却不行?
开发者工具的实现和真机是不太一样的,毕竟处于不同平台。我们会尽量让开发者工具的表现和真机对齐,但是也不敢保证能做到一样。。。
还有一个问题:
FileSystemManager.accessSync(string path)
API函数没有提供返回值,那我怎么判断文件/目录是否存在???
其他手机上也试过,都是同样的问题
有走fail回调么?
我用的是同步版的API,没有fail回调函数。还有就是我在console中没有看到相关的报错信息,我看了API的错误信息解释。
麻烦提供一下出现问题的机型和微信版本,并且给个相关的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
还有一个问题:
FileSystemManager.accessSync(string path)
API函数没有提供返回值,那我怎么判断文件/目录是否存在???
您好!
这是相关的代码片段,请查收!
https://developers.weixin.qq.com/s/79PK88mG7z5N