You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

@capacitor/filesystem Directory枚举使用疑问及目录选型咨询

@capacitor/filesystem 目录选择指南与问题解答

结合你提供的Directory枚举注释,针对你的问题逐一解答:


1. 三类内容的目录选择及原因

系统文件(数据库文件):Library

  • 原因:
    • 跨平台一致性:iOS上Library是专门存储应用非用户可见数据的目录,适合存放数据库这类核心私有数据;Android上Library等价于应用内部文件目录,卸载应用时会被删除,数据安全性有保障。
    • 对比Data:iOS上Data指向Documents目录(用户可见),数据库不属于用户生成内容,用Library更符合平台规范。
    • 对比External:External是外部存储的应用私有目录,虽可用但数据库作为核心数据,存放在Library更贴合常规开发逻辑。

用户上传数据(图片、视频、文件等):External

  • 原因:
    • 存储容量适配:图片、视频体积较大,External对应Android外部存储的应用私有目录,可节省设备内部存储空间。
    • 数据生命周期匹配:这类数据属于应用关联内容,卸载应用时需一并删除,External满足该特性。
    • 跨平台兼容:iOS上External指向Documents目录,可正常存储用户上传内容;Android上该目录属于应用私有,其他应用无法随意访问,隐私性有保障。

应用导出的备份文件:分场景选择

  • 仅用于应用自身恢复(无需用户手动访问):选Library或External,确保卸载时自动清理,且数据私有。
  • 需要用户手动获取(比如在文件管理器中找到):
    • Android 11+:枚举中无直接对应公共目录的选项,不建议用Documents(注释明确Android11+不可访问),正确做法是通过**存储访问框架(SAF)**让用户选择保存位置(如Download目录)。
    • iOS:用Documents目录,用户可在“文件”应用中找到备份。
  • 你在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目录。
  • ExternalStorage:
    • Android路径:/storage/emulated/0/(主外部存储根目录)
    • 特性:公共存储目录,有权限的应用均可访问,卸载应用时不会删除此处文件;Android10需开启requestLegacyExternalStorage才能访问,Android11+完全不可用。
    • iOS对应:Documents目录。

内容的提问来源于stack exchange,提问作者Dmitrii Baranov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:07:48