保存文件之后,测试getSavedFileList()方法,正常,但文件为空,再测试AccessSync()文件存在的,再测试removeSavedFile,提示找不到文件 unlink方法已注释,打开之后可以看到运行正常 以下为日志输出 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// [图片] 以下为代码 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// [代码]export [代码][代码]default[代码] [代码]class Main {[代码][代码] [代码][代码]constructor() {[代码][代码] [代码][代码]this[代码][代码].testFile([代码][代码]this[代码][代码]);[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]testFile(mainobj) {[代码][代码] [代码][代码]var[代码] [代码]downloadTask = wx.downloadFile({[代码][代码] [代码][代码]url: [代码][代码]"https://res.wx.qq.com/a/wx_fed/weixin_portal/res/static/img/dNEBuK6.png"[代码][代码],[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]if[代码] [代码](res.statusCode === 200) {[代码][代码] [代码][代码]var[代码] [代码]fsm = wx.getFileSystemManager();[代码][代码] [代码][代码]fsm.saveFile([代码][代码] [代码][代码]{[代码][代码] [代码][代码]tempFilePath: res.tempFilePath,[代码][代码] [代码][代码]filePath: wx.env.USER_DATA_PATH + [代码][代码]"/a.png"[代码][代码],[代码][代码]//保存到特定目录[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]console.log([代码][代码]"保存文件成功:"[代码][代码]+res.savedFilePath);[代码] [代码] [代码][代码]mainobj.testgetSavedFileList();[代码][代码] [代码][代码]mainobj.testAccessSync(res.savedFilePath);[代码][代码] [代码][代码]mainobj.testremoveSavedFile(res.savedFilePath);[代码][代码] [代码][代码]// mainobj.testunlink(res.savedFilePath);[代码][代码] [代码][代码]// mainobj.testAccessSync(res.savedFilePath);[代码] [代码] [代码][代码]}[代码] [代码] [代码][代码]}[代码][代码] [代码][代码]);[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]console.log([代码][代码]"download url error,status:"[代码] [代码]+ res.statusCode);[代码][代码] [代码][代码]console.log([代码][代码]"download url:"[代码] [代码]+ url);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]console.log(res);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]});[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]testgetSavedFileList() {[代码][代码] [代码][代码]wx.getFileSystemManager().getSavedFileList([代码][代码] [代码][代码]{[代码][代码] [代码][代码]"success"[代码][代码]: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]console.log([代码][代码]"getSavedFileList() 测试:"[代码][代码]);[代码][代码] [代码][代码]console.log(res);[代码][代码] [代码][代码]},[代码][代码] [代码][代码]"fail"[代码][代码]: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]console.log(res);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]);[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]testAccessSync(path) {[代码][代码] [代码][代码]var[代码] [代码]exist = [代码][代码]false[代码][代码];[代码][代码] [代码][代码]try[代码] [代码]{[代码][代码] [代码][代码]wx.getFileSystemManager().accessSync(path);[代码][代码] [代码][代码]exist = [代码][代码]true[代码][代码];[代码][代码] [代码][代码]} [代码][代码]catch[代码] [代码](e) {[代码][代码] [代码][代码]exist = [代码][代码]false[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]console.log([代码][代码]"accessSync() 测试是否存在:"[代码] [代码]+ exist);[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]testremoveSavedFile(path) {[代码][代码] [代码][代码]wx.getFileSystemManager().removeSavedFile([代码][代码] [代码][代码]{[代码][代码] [代码][代码]"filePath"[代码][代码]:path,[代码][代码] [代码][代码]"success"[代码][代码]: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]console.log([代码][代码]"removeSavedFile() success:"[代码][代码]);[代码][代码] [代码][代码]console.log(res);[代码][代码] [代码][代码]},[代码][代码] [代码][代码]"fail"[代码][代码]: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]console.log([代码][代码]"removeSavedFile() fail:"[代码][代码]);[代码][代码] [代码][代码]console.log(res);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]);[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]testunlink(path) {[代码][代码] [代码][代码]wx.getFileSystemManager().unlinkSync(path);[代码][代码] [代码][代码]console.log([代码][代码]"unlink删除"[代码][代码]);[代码][代码] [代码][代码]}[代码][代码]}[代码]
目前FileSystemManager存在的4个问题File处理是非常重要的类,稍有问题,就可能导致系统数据错误,目前发现FileSystemManager有4个问题: 1、removeSavedFile(Object)方法已经失效。无法删除saveFile保存文件。2个月前测试还是正常的。导致以前使用此方法的程序全部出错。文档上没有任何说明。 2、unlinkSync()方法代替了removeSaveFile方法。文档依然没有任何说明。方法命名也是有问题的,unlink怎么也无法跟删除文件联系在一次。以后命名用delFile,deleteFile等 3、accessSync()方法用于判断文件是否存在。尽然是通过函数报错实现的。"如果执行方法报错,说明文件不存在。"这个是很原始的思维。方法返回true,false是比较优雅的,代码实现: try{ wx.getFileSystemManager().accessSync(path); return true; }catch(e){ return false; } 4、getSavedFileList()方法无法获得saveFile保存的文件列表(估计跟removeSaveFile是相同的问题) 按照经验来看,这个类应该有不止以上4个问题,应该还有更多的问题。请抓紧排查修复。
2018-12-25