收藏
回答

目前FileSystemManager存在的4个问题

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小游戏 Bug FileSystemManager 工具 7.0 2.4.3

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
回答关注问题邀请回答
收藏

4 个回答

  • 小程序技术专员-Eric
    小程序技术专员-Eric
    2018-12-25

    我这边不能重现,提供一下代码片段?

    2018-12-25
    赞同
    回复
  • 梦醒的夏天
    梦醒的夏天
    05-13

    资源存储文件到手机缓存问题太多,导致部分用户再进不了游戏,迫不得已把缓存到本地去掉了

    05-13
    赞同
    回复
  • 冬寒季
    冬寒季
    05-12

    同意楼主,希望官方,认证排查完善一下FileSystemManager API相关方法,的确问题有点多。

    05-12
    赞同
    回复
  • Name🙈🎶🎃
    Name🙈🎶🎃
    2018-12-25

    保存文件之后,测试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删除");
      }
    }




    2018-12-25
    赞同
    回复 1
    • 小程序技术专员-Eric
      小程序技术专员-Eric
      2018-12-27

      wx.env.USER_DATA_PATH  里存的是用户本地用户文件,getSavedFileList 获取的是本地缓存文件。我们后续会完善一下这块的文档。

      2018-12-27
      回复