@capacitor/filesystem Directory枚举使用疑问及目录选型咨询
@capacitor/filesystem 目录选择指南与问题解答
结合你提供的Directory枚举注释,针对你的问题逐一解答:
1. 三类内容的目录选择及原因
系统文件(数据库文件):Library
- 原因:
- 跨平台一致性:iOS上
Library是专门存储应用非用户可见数据的目录,适合存放数据库这类核心私有数据;Android上Library等价于应用内部文件目录,卸载应用时会被删除,数据安全性有保障。 - 对比
Data:iOS上Data指向Documents目录(用户可见),数据库不属于用户生成内容,用Library更符合平台规范。 - 对比
External:External是外部存储的应用私有目录,虽可用但数据库作为核心数据,存放在Library更贴合常规开发逻辑。
- 跨平台一致性:iOS上
用户上传数据(图片、视频、文件等):External
- 原因:
- 存储容量适配:图片、视频体积较大,
External对应Android外部存储的应用私有目录,可节省设备内部存储空间。 - 数据生命周期匹配:这类数据属于应用关联内容,卸载应用时需一并删除,
External满足该特性。 - 跨平台兼容:iOS上
External指向Documents目录,可正常存储用户上传内容;Android上该目录属于应用私有,其他应用无法随意访问,隐私性有保障。
- 存储容量适配:图片、视频体积较大,
应用导出的备份文件:分场景选择
- 仅用于应用自身恢复(无需用户手动访问):选
Library或External,确保卸载时自动清理,且数据私有。 - 需要用户手动获取(比如在文件管理器中找到):
- Android 11+:枚举中无直接对应公共目录的选项,不建议用
Documents(注释明确Android11+不可访问),正确做法是通过**存储访问框架(SAF)**让用户选择保存位置(如Download目录)。 - iOS:用
Documents目录,用户可在“文件”应用中找到备份。
- Android 11+:枚举中无直接对应公共目录的选项,不建议用
- 你在Android12上用
Documents指定Download目录能运行,大概率是申请了MANAGE_EXTERNAL_STORAGE权限,但该权限属于特殊权限,Google Play审核可能受限,不推荐长期使用。
2. 枚举中shared/external是否指SD卡?
不是。shared/external指设备的主外部存储分区,通常是手机内置的共享存储(如/storage/emulated/0/),属于不可移除存储;SD卡属于次要外部存储,枚举并未直接对应这类路径。
3. External和ExternalStorage的区别
二者在Android上的路径、权限特性完全不同:
External:- Android路径:
/storage/emulated/0/Android/data/[你的应用包名]/files - 特性:应用私有外部存储目录,其他应用无权限访问,卸载时会被删除;Android11+完全兼容,无需额外权限。
- iOS对应:
Documents目录。
- Android路径:
ExternalStorage:- Android路径:
/storage/emulated/0/(主外部存储根目录) - 特性:公共存储目录,有权限的应用均可访问,卸载应用时不会删除此处文件;Android10需开启
requestLegacyExternalStorage才能访问,Android11+完全不可用。 - iOS对应:
Documents目录。
- Android路径:
内容的提问来源于stack exchange,提问作者Dmitrii Baranov
相关产品推荐
相关产品推荐

