[Feature]: 建议补全 FileSystemManager 实例方法的完整支持(access / mkdir / readFile / writeFile / unlink 等)
- Dominant language
- JavaScript
- Stars
- 933
- Forks
- 99
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 14
Description
### 目标模块 / Component
Android SDK
### 背景与问题 / Problem
场景需要在本地持久化缓存(单文件 200KB~2MB)USER_DATA_PATH 目录,
进入页面优先读缓存渲染,再异步校验服务端版本号更新缓存。该方案在微信官方运行时完全可用,但在 dimina 环境下:
无法创建/确认缓存目录(mkdir/access 缺失);
无法读写缓存文件(readFile/writeFile 缺失);
无法清理写入失败的临时文件(unlink 缺失)。
即文件缓存方案在 dimina 上完全不可落地,业务只能回退到 Storage(单 key 1MB 上限,直接超限)或不缓存(每次进页面走网络,首屏慢)。
### 建议方案 / Proposed Solution
按微信官方 FileSystemManager 规范,补齐实例方法的透传实现,建议优先级:
P0:readFile、writeFile(utf8 encoding,含 Promise/回调两种风格)——缓存读写核心;
P0:mkdir、access——目录初始化与存在性检查;
P1:unlink——临时文件清理;
P2:readdir、stat、rmdir、copyFile、rename——对齐能力面。
### 使用示例与验收标准 / Use Case and Acceptance Criteria
使用示例(与微信官方一致):
const fs = wx.getFileSystemManager()
const BASE = `${wx.env.USER_DATA_PATH}/form-cache`
fs.access({ path: BASE, fail: () => fs.mkdir({ dirPath: BASE, recursive: true }) })
fs.writeFile({
filePath: `${BASE}/app1_formA.json`,
data: JSON.stringify(formObject),
encoding: 'utf8',
success: () => {},
})
fs.readFile({
filePath: `${BASE}/app1_formA.json`,
encoding: 'utf8',
success: res => { const form = JSON.parse(res.data) },
fail: err => { /* 回退网络获取 */ },
})
### 目标平台 / Target Platforms
Android
### 兼容性与影响 / Compatibility and Impact
影响范围:纯新增能力,不改变现有 saveFile/openDocument 行为,对存量业务无回归风险;
平台差异:需确认目标端的可写目录映射(对应 USER_DATA_PATH)及容量限制,如有配额差异建议在文档中明示;
收益:解锁大体量 本地缓存类方案(类似离线数据等),弥补 Storage 单 key 1MB 上限的能力空缺。
### 替代方案 / Alternatives
_No response_
### 是否愿意参与实现 / Contribution
None
### 参考资料或附件 / References
_No response_
### 补充信息 / Additional Context
_No response_
### 提交检查 / Checklist
- [x] 我已搜索现有 Issues,确认没有相同建议。
- [x] 这是一项明确的功能建议,而不是使用咨询或故障报告。
Contributor guide
Assessment
This issue has not been assessed yet.