• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

小程序开发API之文件getFileSystemManager()

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

文件系统

文件系统是小程序提供的一套以小程序和用户维度隔离的存储以及一套相应的管理接口。通过 wx.getFileSystemManager() 可以获取到全局唯一的文件系统管理器,所有文件系统的管理操作通过 FileSystemManager 来调用。

const fs = wx.getFileSystemManager()

文件主要分为两大类:

  • 代码包文件:代码包文件指的是在项目目录中添加的文件。
  • 本地文件:通过调用接口本地产生,或通过网络下载下来,存储到本地的文件。

其中本地文件又分为三种:

  1. 本地临时文件:临时产生,随时会被回收的文件。不限制存储大小。
  2. 本地缓存文件:小程序通过接口把本地临时文件缓存后产生的文件,不能自定义目录和文件名。除非用户主动删除小程序,否则不会被删除。跟本地用户文件共计,普通小程序最多可存储 10MB,游戏类目的小程序最多可存储 50MB。
  3. 本地用户文件:小程序通过接口把本地临时文件缓存后产生的文件,允许自定义目录和文件名。除非用户主动删除小程序,否则不会被删除。跟本地缓存文件共计,普通小程序最多可存储 10MB,游戏类目的小程序最多可存储 50MB。

代码包文件

由于代码包文件大小限制,代码包文件适用于放置首次加载时需要的文件,对于内容较大或需要动态替换的文件,不推荐用添加到代码包中,推荐在小游戏启动之后再用下载接口下载到本地。

访问代码包文件
代码包文件的访问方式是从项目根目录开始写文件路径,不支持相对路径的写法。

修改代码包文件
代码包内的文件无法在运行后动态修改或删除,修改代码包文件需要重新发布版本。

本地文件

本地文件指的是小程序被用户添加到手机后,会有一块独立的文件存储区域,以用户维度隔离。即同一台手机,每个微信用户不能访问到其他登录用户的文件同一个用户不同 appId 之间的文件也不能互相访问

本地文件的文件路径均为以下格式:

{{协议名}}://文件路径

其中,协议名在 iOS/Android 客户端为 “wxfile”,在开发者工具上为 “http”,开发者无需关注这个差异,也不应在代码中去硬编码完整文件路径。

本地临时文件
本地临时文件只能通过调用特定接口产生,不能直接写入内容。本地临时文件产生后,仅在当前生命周期内有效,重启之后即不可用。因此,不可把本地临时文件路径存储起来下次使用。如果需要下次在使用,可通过 FileSystemManager.saveFile() 或 FileSystemManager.copyFile() 接口把本地临时文件转换成本地缓存文件或本地用户文件。
示例

wx.chooseImage({
  success(res) {
    const tempFilePaths = res.tempFilePaths // tempFilePaths 的每一项是一个本地临时文件路径
  }
})

本地缓存文件
本地缓存文件只能通过调用特定接口产生,不能直接写入内容。本地缓存文件产生后,重启之后仍可用。本地缓存文件只能通过 FileSystemManager.saveFile() 接口将本地临时文件保存获得。
示例

fs.saveFile({
  tempFilePath: '', // 传入一个本地临时文件路径
  success(res) {
    console.log(res.savedFilePath) // res.savedFilePath 为一个本地缓存文件路径
  }
})

注意:本地缓存文件是最初的设计,1.7.0 版本开始,提供了功能更完整的本地用户文件,可以完全覆盖本地缓存文件的功能,如果不需要兼容低于 1.7.0 版本,可以不使用本地缓存文件。

本地用户文件
我们提供了一个用户文件目录给开发者,开发者对这个目录有完全自由的读写权限。通过 wx.env.USER_DATA_PATH 可以获取到这个目录的路径。

示例

// 在本地用户文件目录下创建一个文件 hello.txt,写入内容 "hello, world"
const fs = wx.getFileSystemManager()
fs.writeFileSync(`${wx.env.USER_DATA_PATH}/hello.txt`, 'hello, world', 'utf8')

读写权限

文件API

wx.saveFile(Object object)

保存文件到本地。
注意

  • saveFile 会把临时文件移动,因此调用成功后传入的 tempFilePath 将不可用
  • 本地文件存储的大小限制为 10M

参数Object object

object.success 回调函数参数res

示例代码
选择照片保存文件到本地

wx.chooseImage({
  success(res) {
    const tempFilePaths = res.tempFilePaths
    wx.saveFile({
      tempFilePath: tempFilePaths[0],
      success(res) {
        const savedFilePath = res.savedFilePath
      }
    })
  }
})

wx.removeSavedFile(Object object)

删除本地缓存文件
参数Object object

示例代码
获取本地文件的文件信息并删除你要删的文件

wx.getSavedFileList({
  success(res) {
    if (res.fileList.length > 0) {
      wx.removeSavedFile({
        filePath: res.fileList[0].filePath,
        complete(res) {
          console.log(res)
        }
      })
    }
  }
})

wx.openDocument(Object object)

新开页面打开文档
参数Object object

object.fileType 的合法值

示例代码
下载文件并文档打开

wx.downloadFile({
  // 示例 url,并非真实存在
  url: 'http://example.com/somefile.pdf',
  success(res) {
    const filePath = res.tempFilePath
    wx.openDocument({
      filePath,
      success(res) {
        console.log('打开文档成功')
      }
    })
  }
})

wx.getSavedFileList(Object object)

获取该小程序下已保存的本地缓存文件列表
参数Object object

object.success 回调函数参数res

res.fileList 的结构

示例代码
获取该小程序下已保存的本地缓存文件列表

wx.getSavedFileList({
  success(res) {
    console.log(res.fileList)
  }
})

wx.getSavedFileInfo(Object object)

获取本地文件的文件信息。此接口只能用于获取已保存到本地的文件,若需要获取临时文件信息,请使用 wx.getFileInfo() 接口。

参数Object object

object.success 回调函数参数res

示例代码
获取本地文件的文件信息。

wx.getSavedFileList({
  success(res) {
    console.log(res.fileList)
  }
})

wx.getFileInfo(Object object)

获取文件信息
参数Object object

object.digestAlgorithm 的合法值

object.success 回调函数参数res

示例代码

wx.getFileInfo({
  success(res) {
    console.log(res.size)
    console.log(res.digest)
  }
})

wx.getFileSystemManager()

获取全局唯一的文件管理器
返回值
FileSystemManager 文件管理器

方法

FileSystemManager.access(Object object)
判断文件/目录是否存在

FileSystemManager.appendFile(Object object)
在文件结尾追加内容

FileSystemManager.saveFile(Object object)
保存临时文件到本地。此接口会移动临时文件,因此调用成功后,tempFilePath 将不可用。

FileSystemManager.getSavedFileList(Object object)
获取该小程序下已保存的本地缓存文件列表

FileSystemManager.removeSavedFile(Object object)
删除该小程序下已保存的本地缓存文件

FileSystemManager.copyFile(Object object)
复制文件

FileSystemManager.getFileInfo(Object object)
获取该小程序下的 本地临时文件 或 本地缓存文件 信息

FileSystemManager.mkdir(Object object)
创建目录

FileSystemManager.readdir(Object object)
读取目录内文件列表

FileSystemManager.readFile(Object object)
读取本地文件内容

FileSystemManager.rename(Object object)
重命名文件。可以把文件从 oldPath 移动到 newPath

FileSystemManager.rmdir(Object object)
删除目录

FileSystemManager.stat(Object object)
获取文件 Stats 对象

FileSystemManager.unlink(Object object)
删除文件

FileSystemManager.unzip(Object object)
解压文件

FileSystemManager.writeFile(Object object)
写文件

Stats

描述文件状态的对象

属性

string mode
文件的类型和存取的权限,对应 POSIX stat.st_mode
number size
文件大小,单位:B,对应 POSIX stat.st_size
number lastAccessedTime
文件最近一次被存取或被执行的时间,UNIX 时间戳,对应 POSIX stat.st_atime
number lastModifiedTime
文件最后一次被修改的时间,UNIX 时间戳,对应 POSIX stat.st_mtime
方法
boolean Stats.isDirectory()
判断当前文件是否一个目录

boolean Stats.isFile()
判断当前文件是否一个普通文件






鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
代码统计小程序发布时间:2022-07-18
下一篇:
微信小程序字符串如何转数字?发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap