【愚公系列】《微信小程序与云开发从入门到实践》039-小程序文件系统

举报
愚公搬代码 发表于 2024/12/29 11:48:16 2024/12/29
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。博客内容.NET、...
标题 详情
作者简介 愚公搬代码
头衔 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
近期荣誉 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
博客内容 .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
欢迎 👍点赞、✍评论、⭐收藏

🚀前言

随着小程序的广泛应用,如何高效管理和存储数据成为开发者面临的重要课题。小程序文件系统作为一种轻量级的存储解决方案,提供了灵活的文件存储和管理能力,使得开发者能够更加便捷地处理用户数据和应用资源。

在本篇文章中,我们将深入探讨小程序文件系统的基本概念、主要功能以及实际应用场景。我们将详细介绍文件的读写操作、文件的上传与下载、以及如何有效管理文件存储空间等内容。此外,我们还会分享一些最佳实践与常见问题的解决方案,帮助开发者更好地利用文件系统提升小程序的性能和用户体验。

🚀一、小程序文件系统

🔎1.以 wx 开头的文件系统接口

🦋1.1 小程序与文件系统相关的常用方法

小程序提供了一些便捷的方法,帮助开发者操作文件系统。这些方法一般以 wx 开头,提供快速使用的接口。

常用方法与参数说明

方法名 功能说明 参数说明
wx.saveFileToDisk 将小程序文件系统中的文件保存到用户的磁盘中(仅支持在PC端使用)。 filePath(待保存的文件路径)、success(成功回调)、fail(失败回调)、complete(完成回调)
wx.saveFile 将临时文件移动到本地,成功后返回保存后的文件路径。 tempFilePath(临时文件路径)、success(成功回调)、fail(失败回调)、complete(完成回调)
wx.removeSavedFile 删除本地文件。 filePath(要删除的文件的本地路径)、success(成功回调)、fail(失败回调)、complete(完成回调)
wx.openDocument 打开本地文档文件,支持文件类型包括 docdocxxlsxlsxpptpptxpdf 等。 filePath(文件本地路径)、fileType(文件类型)、success(成功回调)、fail(失败回调)、complete(完成回调)
wx.getSavedFileList 获取当前小程序已经存储到本地的缓存文件列表,成功的回调中会返回 fileList 数组,包含文件的路径、大小和创建时间等信息。 success(成功回调)、fail(失败回调)、complete(完成回调)
wx.getSavedFileInfo 获取本地文件的文件信息,返回文件的大小(size)和创建时间(createTime)。 filePath(文件路径)、success(成功回调)、fail(失败回调)、complete(完成回调)
wx.getFileInfo 获取本地文件的信息,返回文件的 sizedigest 摘要信息(通过摘要算法计算)。 filePath(文件路径)、digestAlgorithm(摘要算法,默认 md5)、success(成功回调)、fail(失败回调)
wx.getFileSystemManager 获取全局的文件管理器对象,提供更丰富的文件管理方法。

🦋1.2 详细方法解析

☀️1.2.1 wx.saveFileToDisk

  • 功能:将小程序文件系统中的文件保存到用户的磁盘中。此方法仅支持在 PC 端使用,用于将文件从小程序的文件系统保存到本地磁盘。
  • 参数
    • filePath:待保存的文件路径。
    • success:成功时的回调函数。
    • fail:失败时的回调函数。
    • complete:完成时的回调函数。

☀️1.2.2 wx.saveFile

  • 功能:将临时文件(比如通过文件上传下载等方式获取的文件)保存到本地文件系统中。保存后,临时文件的路径将不可用,且返回保存后的文件路径。
  • 参数
    • tempFilePath:临时文件路径。
    • success:成功时的回调函数,返回保存后的文件路径。
    • fail:失败时的回调函数。
    • complete:完成时的回调函数。

☀️1.2.3 wx.removeSavedFile

  • 功能:删除本地文件。
  • 参数
    • filePath:要删除的文件的本地路径。
    • success:成功时的回调函数。
    • fail:失败时的回调函数。
    • complete:完成时的回调函数。

☀️1.2.4 wx.openDocument

  • 功能:用于打开本地的文档文件,支持的文件类型有 docdocxxlsxlsxpptpptxpdf 等。
  • 参数
    • filePath:文件的本地路径。
    • fileType:文件的类型,支持 docdocxxlsxlsxpptpptxpdf 等类型。
    • success:成功时的回调函数。
    • fail:失败时的回调函数。
    • complete:完成时的回调函数。

☀️1.2.5 wx.getSavedFileList

  • 功能:获取当前小程序已经存储到本地的缓存文件列表,返回一个 fileList 数组,每个元素包含文件的路径、大小(单位:字节)和创建时间等信息。
  • 参数
    • success:成功时的回调函数,返回一个 fileList 数组。
    • fail:失败时的回调函数。
    • complete:完成时的回调函数。

☀️1.2.6 wx.getSavedFileInfo

  • 功能:获取本地文件的文件信息,返回文件的大小和创建时间。
  • 参数
    • filePath:文件的本地路径。
    • success:成功时的回调函数,返回文件的 sizecreateTime 信息。
    • fail:失败时的回调函数。
    • complete:完成时的回调函数。

☀️1.2.7 wx.getFileInfo

  • 功能:获取本地文件的详细信息,返回文件的大小和 digest 摘要信息,digest 是通过摘要算法(如 MD5)计算出来的。
  • 参数
    • filePath:文件的本地路径。
    • digestAlgorithm:摘要算法(默认值为 md5)。
    • success:成功时的回调函数,返回文件的 sizedigest 摘要信息。
    • fail:失败时的回调函数。
    • complete:完成时的回调函数。

☀️1.2.8 wx.getFileSystemManager

  • 功能:获取全局的文件管理器对象,该对象封装了更多丰富的文件管理方法,可以用于更底层的文件系统操作。
  • 返回值:返回一个 FileSystemManager 对象,提供更丰富的文件管理操作,如读取文件、写入文件等。

🦋1.3 文件系统管理器 FileSystemManager 方法

wx.getFileSystemManager 返回的 FileSystemManager 对象,封装了比普通文件方法更丰富的文件操作接口。这些方法可以帮助你处理文件的读取、写入、删除等操作,适用于更复杂的文件系统管理需求。

🔎2.FileSystemManager 文件管理器

通过 wx.getFileSystemManager() 可以获取到一个全局唯一的文件管理器实例,通过该实例可以进行文件操作,如判断文件是否存在、创建文件、读取文件、重命名文件、删除文件等。

🦋2.1 判断文件或目录是否存在

  • 异步: access

    • 参数:path(文件或目录路径),success(成功回调),fail(失败回调),complete(完成回调)
    • 功能:判断指定文件或目录是否存在。如果存在,调用 success 回调;如果不存在,调用 fail 回调。
  • 同步: accessSync

    • 参数:path(文件或目录路径)
    • 功能:同步地判断文件或目录是否存在,如果不存在会抛出异常。

🦋2.2 读取文件内容

  • 异步: readFile

    • 参数:filePath(文件路径),encoding(编码方式),position(开始读取的位置),length(读取的字节数),success(成功回调),fail(失败回调),complete(完成回调)
    • 功能:异步读取文件内容,读取成功后返回数据。
  • 同步: readFileSync

    • 参数:filePath(文件路径),encoding(编码方式)
    • 功能:同步读取文件内容,返回文件内容。

🦋2.3 追加文件内容

  • 异步: appendFile

    • 参数:filePath(文件路径),data(要追加的内容),encoding(编码方式),success(成功回调),fail(失败回调),complete(完成回调)
    • 功能:异步追加内容到文件末尾。
  • 同步: appendFileSync

    • 参数:filePath(文件路径),data(要追加的内容),encoding(编码方式)
    • 功能:同步地追加内容到文件末尾。

🦋2.4 打开文件

  • 异步: open

    • 参数:filePath(文件路径),flag(操作符),success(成功回调),fail(失败回调),complete(完成回调)
    • 功能:异步打开文件,返回文件标识符,后续的文件操作需要使用该标识符。
  • 同步: openSync

    • 参数:filePath(文件路径),flag(操作符)
    • 功能:同步打开文件,返回文件标识符。

🦋2.5 关闭文件

  • 异步: close

    • 参数:fd(文件标识符),success(成功回调),fail(失败回调),complete(完成回调)
    • 功能:异步关闭文件。
  • 同步: closeSync

    • 参数:fd(文件标识符)
    • 功能:同步关闭文件。

🦋2.6 文件重命名

  • 异步: rename

    • 参数:oldPath(源路径),newPath(目标路径),success(成功回调),fail(失败回调),complete(完成回调)
    • 功能:异步重命名文件(也可以用于移动文件)。
  • 同步: renameSync

    • 参数:oldPath(源路径),newPath(目标路径)
    • 功能:同步重命名文件。

🦋2.7 删除文件或目录

  • 异步: unlink

    • 参数:filePath(文件路径),success(成功回调),fail(失败回调),complete(完成回调)
    • 功能:异步删除文件。
  • 同步: unlinkSync

    • 参数:filePath(文件路径)
    • 功能:同步删除文件。

🦋2.8 创建目录

  • 异步: mkdir

    • 参数:dirPath(目录路径),recursive(是否递归创建),success(成功回调),fail(失败回调),complete(完成回调)
    • 功能:异步创建目录,支持递归创建。
  • 同步: mkdirSync

    • 参数:dirPath(目录路径),recursive(是否递归创建)
    • 功能:同步创建目录,支持递归创建。

🦋2.9 删除目录

  • 异步: rmdir

    • 参数:dirPath(目录路径),recursive(是否递归删除),success(成功回调),fail(失败回调),complete(完成回调)
    • 功能:异步删除目录,支持递归删除。
  • 同步: rmdirSync

    • 参数:dirPath(目录路径),recursive(是否递归删除)
    • 功能:同步删除目录,支持递归删除。

🦋2.10 复制文件

  • 异步: copyFile

    • 参数:srcPath(源文件路径),destPath(目标文件路径),success(成功回调),fail(失败回调),complete(完成回调)
    • 功能:异步复制文件。
  • 同步: copyFileSync

    • 参数:srcPath(源文件路径),destPath(目标文件路径)
    • 功能:同步复制文件。

🦋2.11 获取文件状态

  • 异步: fstat

    • 参数:fd(文件描述符),success(成功回调),fail(失败回调),complete(完成回调)
    • 功能:异步获取文件状态,返回一个 Stats 对象。
  • 同步: fstatSync

    • 参数:fd(文件描述符)
    • 功能:同步获取文件状态,返回一个 Stats 对象。

🦋2.12 获取文件信息

  • 异步: getFileInfo

    • 参数:filePath(文件路径),success(成功回调),fail(失败回调),complete(完成回调)
    • 功能:异步获取文件的尺寸信息。
  • 同步: getFileInfoSync

    • 参数:filePath(文件路径)
    • 功能:同步获取文件的尺寸信息。

🦋2.13 解压文件

  • 异步: unzip

    • 参数:zipFilePath(压缩文件路径),targetPath(解压目标路径),success(成功回调),fail(失败回调),complete(完成回调)
    • 功能:异步解压文件(支持 .zip 格式)。
  • 同步: unzipSync

    • 参数:zipFilePath(压缩文件路径),targetPath(解压目标路径)
    • 功能:同步解压文件(支持 .zip 格式)。

🔎3.文件标识符与打开文件方式

🦋3.1 文件标识符与操作方法

在文件操作中,有些方法可以直接通过文件路径操作文件,然而有些方法需要使用文件标识符(fd)来操作文件。对于需要使用文件标识符的操作,在执行之前必须先通过 open() 方法打开文件,获取文件标识符。

🦋3.2 打开文件 (open) 方法

通过 wx.getFileSystemManager().open() 方法打开文件时,可以设置 flag 参数,指定文件的打开方式。flag 参数用于限制文件的使用方式,不同的值有不同的含义,具体如下:

表 9-13:flag 参数的值及含义

flag 含义
a+ 打开文件进行内容追加,如果文件不存在则会创建;文件已存在则打开进行内容追加。
aX 打开文件进行内容追加,文件不存在则创建,若文件存在则失败。
r+ 打开文件用于读取和追加内容,如果文件不存在则会失败。
w+ 打开文件用于读取和写入,如果文件不存在则会创建,若文件已存在则截断。
wx 打开文件用于写入,文件不存在则创建,若文件已存在则失败。
r 打开文件进行读取,如果文件不存在则会失败。
w 打开文件进行写入,文件不存在则创建,若文件已存在则截断。
wx+ 新建文件用于读取和写入,文件存在则会失败。
wxt 新建文件用于读取和写入,文件存在则失败。

🦋3.3 使用文件标识符

  • 使用文件标识符 fd 时,首先需要通过 open() 方法打开文件并获取标识符。之后,调用需要文件标识符的操作方法,如 fstat(), read(), write() 等。
  • 在操作完成后,必须通过 close() 方法关闭文件,释放资源。

🦋3.4 Stats 对象介绍

stat() 方法用于获取文件或目录的状态信息,返回一个 Stats 对象,该对象封装了文件的详细信息。

表 9-14:Stats 对象的属性

属性名 意义 类型
mode 文件的类型及存储权限 字符串
size 文件的大小 数值
lastAccessedTime 文件最后一次被访问的时间 数值
lastModifiedTime 文件最后一次修改的时间 数值

表 9-15:Stats 对象的方法

方法名 意义 参数
isDirectory 判断是否是一个目录
isFile 判断是否是一个普通文件

通过 Stats 对象可以获取到文件或目录的更多细节,如文件大小、权限以及最后修改时间等。


🦋3.4 readZipEntry 方法介绍

readZipEntry 方法用于读取压缩包中的文件,可以通过 entries 参数来指定读取的文件列表。

entries 参数

  • 如果 entries 设置为字符串 "a",则表示读取压缩包内的所有文件。
  • 如果 entries 设置为一个对象数组,则可以更精确地控制要读取的文件内容。

表 9-16:entries 数组时可配置的属性

属性名 类型 意义
path 字符串 压缩包内文件的路径
encoding 字符串 编码方式
position 数值 从文件的指定位置开始读取
length 数值 读取文件的长度

这些配置项允许开发者精准地控制要从压缩包中读取的文件内容,可以通过设置路径、编码方式以及读取位置来进行灵活的操作。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。