首页 > 其他分享 >文件系统

文件系统

时间:2024-12-24 09:54:17浏览次数:3  
标签:文件 缓存 代码 文件系统 本地用户 本地 临时文件

文件系统

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

var fs = wx.getFileSystemManager()

文件主要分为两大类:

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

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

  1. 本地临时文件:临时产生,随时会被回收的文件。运行时最多存储 4GB,结束运行后,如果已使用超过 2GB,会以文件为维度按照最近使用时间从远到近进行清理至少于2GB。
  2. 本地缓存文件:小程序通过接口把本地临时文件缓存后产生的文件,不能自定义目录和文件名。跟本地用户文件共计,小程序(含小游戏)最多可存储 200MB。
  3. 本地用户文件:小程序通过接口把本地临时文件缓存后产生的文件,允许自定义目录和文件名。跟本地缓存文件共计,小程序(含小游戏)最多可存储 200MB。

代码包文件

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

访问代码包文件

代码包文件的访问方式是从项目根目录开始写文件路径,不支持相对路径的写法。如:/a/b/ca/b/c 都是合法的,./a/b/c ../a/b/c 则不合法。 image.png

修改代码包文件

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

本地文件

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

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

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

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

本地临时文件

本地临时文件只能通过调用特定接口产生,不能直接写入内容。本地临时文件产生后,仅在当前生命周期内保证有效,重启之后不一定可用。如果需要保证在下次启动时无需下载,可通过 FileSystemManager.saveFile()FileSystemManager.copyFile() 接口把本地临时文件转换成本地缓存文件或本地用户文件。

临时文件的清理策略为:小程序退出后系统会检查该小程序的临时文件占用,若不超过2GB则不进行清理,超过上限则以文件为维度按照最近使用时间从远到近进行清理。同时也会检查所有小程序的临时文件占用,若超过6GB则以小程序为维度进行清理。

因此,开发者在下载临时文件时,可先通过FileSystemManager.access()检查该文件是否存在,减少重复文件下载,提升用户体验。

示例

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

本地缓存文件

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

示例

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

注意:本地缓存文件是最初的设计,1.7.0 版本开始,提供了功能更完整的本地用户文件,可以完全覆盖本地缓存文件的功能,如果不需要兼容低于 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')

读写权限

接口、组件
代码包文件
本地临时文件
本地缓存文件
本地用户文件

清理策略

  • 本地临时文件只保证在小程序当前生命周期内,一旦小程序被关闭就可能被清理,即下次冷启动不保证可用。
  • 本地缓存文件和本地用户文件的清理时机跟代码包一样,只有在代码包被清理的时会被清理。

标签:文件,缓存,代码,文件系统,本地用户,本地,临时文件
From: https://www.cnblogs.com/AtlasLapetos/p/18623942

相关文章

  • 【操作系统】一篇带你彻底搞定文件系统
    ......
  • LargeSystemCache=1 启用“大型系统缓存”,适用于高内存的服务器,能提高文件系统的缓存
    "LargeSystemCache"=dword:00000000这一行通常出现在Windows操作系统的注册表设置中,涉及到系统内存管理的配置,特别是与文件缓存(FileCache)相关的部分。它具体控制Windows操作系统如何使用系统内存来缓存文件系统数据。下面逐个回答你的问题:1. 为什么(Why)"LargeSystemCac......
  • 嵌入式Linux,proc文件系统讲解,介绍以及读取使用
    1.简介         proc文件系统是一个虚拟文件系统,它以文件系统的方式为应用层访问系统内核数据提供了接口,用户和应用程序可以通过proc文件系统得到系统信息和进程相关信息,对proc文件系统的读写作为与内核进行通信的一种手段。但是与普通文件不同的是,proc文......
  • 【转载】从 HPC 到 AI:探索文件系统的发展及性能评估
    2024-03-06鲁蔚征随着AI技术的迅速发展,模型规模和复杂度以及待处理数据量都在急剧上升,这些趋势使得高性能计算(HPC)变得越来越必要。HPC通过集成强大的计算资源,比如GPU和CPU集群,提供了处理和分析大规模数据所需的算力。然而,这也带来了新的挑战,尤其是在存储系统方面,包括如......
  • Linux系统中安装HDFS(Hadoop分布式文件系统)的详细步骤
    一、前提条件安装好Linux操作系统(如Ubuntu、CentOS等)。确保系统已经安装了Java运行环境(JDK),因为Hadoop是基于Java开发的。可以通过在终端输入java-version来检查是否安装了JDK。如果没有安装,需要先安装适合您系统的JDK版本,并配置好环境变量。二、下载Hadoop访问Hadoop官方......
  • 分布式文件系统HDFS
    HDFS简介HDFS(HadoopDistributedFileSystem)是一个分布式文件系统,是Hadoop生态系统的核心组件之一。它被设计用来在廉价的硬件设备上存储大规模的数据,并且能够提供高容错性和高吞吐量的数据访问。例如,在一个大型的互联网公司,每天会产生海量的用户行为数据,如浏览记录、购买记......
  • 文件系统的全局结构(布局)
    文件系统的全局结构(布局)一、文件系统在外存中的结构演变过程:原始磁盘(刚被生产出来)​​物理格式化(低级格式化):划分扇区,检测坏扇区,并用备用扇区替换坏扇区(骗过OS)​​磁盘分区(分卷Volume)分为C盘、D盘等逻辑格式化完成各分区的文件系统初始化注:逻辑格式化后,灰色部分......
  • 文件系统的全局结构(布局)
    文件系统的全局结构(布局)一、文件系统在外存中的结构演变过程:原始磁盘(刚被生产出来)​​物理格式化(低级格式化):划分扇区,检测坏扇区,并用备用扇区替换坏扇区(骗过OS)​​磁盘分区(分卷Volume)分为C盘、D盘等逻辑格式化完成各分区的文件系统初始化注:逻辑格式化后,灰色部分......
  • 文件系统的全局结构(布局)
    文件系统的全局结构(布局)一、文件系统在外存中的结构演变过程:原始磁盘(刚被生产出来)​​物理格式化(低级格式化):划分扇区,检测坏扇区,并用备用扇区替换坏扇区(骗过OS)​​磁盘分区(分卷Volume)分为C盘、D盘等逻辑格式化完成各分区的文件系统初始化注:逻辑格式化后,灰色部分......
  • 虚拟文件系统&文件系统挂载(安装)
    虚拟文件系统&文件系统挂载(安装)一、虚拟文件系统(一)普通的文件系统先来看不存在虚拟文件系统的普通文件系统,彼此之间实现同一功能的接口具有差异,比较混乱。​​‍(二)VFS虚拟文件系统VirtualFileSystem为解决同时使用不同文件系统需要频繁改动底层代码的问题,引入虚拟文件......