ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

微信小程序《案例 5.7 文件操作》

微信小程序《案例 5.7 文件操作》

案例需求

  1. 页面textarea文本框录入文字,输入时页面标题变为 “正在输入文字…”。
  2. 四个基础按钮:
    • 写文件:把 textarea 文字写入用户目录hello.txt
    • 复制文件:把 hello.txt 复制为hello_copy.txt
    • 读文件:读取复制后的文件内容并展示
    • 文件信息:获取文件大小 size、md5 摘要 digest
  3. ✨作业扩展:增加【删除文件】按钮,删除hello_copy.txt,页面显示删除成功信息。

完整代码

1.app.json(webview 引擎,去掉 skyline 配置)

2.pages/index/index.wxml

3.pages/index/index.wxss

4.pages/index/index.js(包含作业扩展删除文件)

5.app.wxss 全局样式

核心知识点

1. 文件管理器对象

const fs = wx.getFileSystemManager()

2. 沙箱用户目录

wx.env.USER_DATA_PATH

  • 小程序隔离沙箱目录,每个小程序、每个微信用户互相隔离,保障隐私。
  • 模拟器路径协议是http://usr;真机协议是wxfile://usr,代码不要硬编码写死字符串,用模板字符串拼接。

3. 文件 API 一览表

API作用
fs.writeFile()写文件,data 传入文本,encoding 指定 utf‑8 编码
fs.copyFile(src,dest)复制本地用户文件,源路径、目标路径
fs.readFile()读取本地文件,encoding:'utf‑8' 拿到文本字符串
fs.getFileInfo()获取文件信息:size字节大小,digestmd5 摘要哈希值
fs.unlink()✨作业扩展:删除本地文件

4. 小程序文件分类

  1. 代码包文件:项目源码、images 图片,只读,运行时不能修改。
  2. 本地用户文件:通过 fs 接口生成,存放在USER_DATA_PATH,可读、写、复制、删除。
  3. 沙箱隔离:不同 AppID 小程序、不同微信用户,文件互相不可访问。

踩坑实录

坑 1:模板字符串用了单引号,路径变成字面字符串

错误:const filePath = '${wx.env.USER_DATA_PATH}/hello.txt'✅正确:const filePath = `${wx.env.USER_DATA_PATH}/hello.txt`,必须反引号。

坑 2:直接读 / 复制 / 删除,提示文件不存在

操作顺序:先写文件生成 hello.txt,再复制,之后才能读、取信息、删除;跳过写文件直接执行后面接口直接 fail。

坑 3:真机和模拟器打印路径前缀不一样

模拟器输出http://usr/xxx.txt,真机输出wxfile://usr/xxx.txt,代码不要写死协议前缀,依靠wx.env.USER_DATA_PATH自动拼接。

坑 4:复制 PPT 代码出现unexpected character

复制带入中文全角符号,全部替换英文半角符号。

坑 5:删除之后还去读文件

文件被unlink删除,文件已经消失,调用 readFile、getFileInfo 会触发 fail 回调,是正常业务逻辑。

返回列表