本问答帖原创发布在华为开发者联盟社区 ,欢迎开发者前往论坛提问交流。
问题描述:
目前文件存储都是根据 context 的 cacheDir 目录存在应用沙箱,怎么存到公共目录,在文件管理可以查看呢?文件管理无法访问其他应用的应用沙箱,现在文件保存了但无法查看。
解决方案:
可以使用 FilePicker 来实现文件保存到系统文件管理器管理的特定目录。对音频、图片、视频、文档类文件的保存操作类似,均通过调用对应 Picker 的 save()接口并传入对应的 saveOptions 来实现。通过 Picker 访问相关文件,无需申请权限。
根据用户文件的常见类型,选择器(FilePicker)分别提供以下选项:
PhotoViewPicker:适用于图片或视频类型文件的选择与保存(该接口在后续版本不再演进)。请使用安全控件创建媒体资源。
DocumentViewPicker:适用于文件类型文件的选择与保存。DocumentViewPicker 对接的选择资源来自于 FilePicker, 负责文件类型的资源管理,文件类型不区分后缀,比如浏览器下载的图片、文档等,都属于文件类型。
AudioViewPicker:适用于音频类型文件的选择与保存。AudioViewPicker 目前对接的选择资源来自于 FilePicker。
参考文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/save-user-file-V5
问题处理思路:
可以先通过 picker 获取到要选择或者保存文件的公共路径,然后通过 fs.copyFile 进行文件复制。
核心示例代码和其他解决方案相关的讨论,请点击原帖查看:





