HarmonyOS 鸿蒙Next使用Device File Browser功能,里面是空的
HarmonyOS 鸿蒙Next使用Device File Browser功能,里面是空的
在C++侧往应用沙箱中写入视频文件,在ArkTS侧使用fs.listFileSync(filePath, listFileOption);可以返回正确的文件,但是无法使用Video组件播放视频,想使用Device File Browser功能看看沙箱路径下的视频文件是否正确,但是Device File Browser并没有该文件
1.沙箱路径不能使用Device File Browser直接看吗?
2.需要将c++侧写入的文件(沙箱目录filesDir文件夹下)复制出来,看看视频文件是否写入正确,请问该怎么取到这个视频文件
1、沙箱路径和物理路径有对应关系,可以查看下这个文档的说明: 沙箱路径对应的实际路径请参考:https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/file-management/app-sandbox-directory.md
应用沙箱路径为加密后的虚拟路径,需要在对应的物理路径下查看 参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-sandbox-directory-V5
2、可以尝试将文件保存到本地查看,解决方案: 可以先通过picker获取到要选择或者保存文件的公共路径,然后通过fs.copyFile进行文件复制,示例代码如下:
import picker from '@ohos.file.picker';
import fs from '@ohos.file.fs';
const photoSaveOptions = new picker.PhotoSaveOptions(); // 创建文件管理器保存选项实例
photoSaveOptions.newFileNames = ["icon.png"]; // 保存文件名(可选)
const photoViewPicker = new picker.PhotoViewPicker();
photoViewPicker.save(photoSaveOptions)
.then(async (photoSaveResult) => {
// 获取到到图片或者视频文件的URI后进行文件读取等操作
let uri = photoSaveResult[0];
console.info('pub uri:' + uri)
// 沙箱路径文件
let sanFile = fs.openSync(sanPath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
let pubFile = fs.openSync(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
// 将文件从沙箱路拷贝到公共路径
fs.copyFileSync(sanFile.fd, pubFile.fd)
})
.catch((err) => {
console.error(`Invoke documentPicker.select failed, code is ${err.code}, message is ${err.message}`); })
针对HarmonyOS 鸿蒙Next使用Device File Browser功能时显示为空的问题,这通常与应用沙箱机制或权限设置有关。以下是一些可能的解释和解决方法:
- 沙箱机制:HarmonyOS采用沙箱机制来保护应用数据安全,应用只能访问自己的沙箱目录。如果尝试通过Device File Browser访问其他应用的沙箱目录,可能会因为权限不足而无法显示内容。
- 权限设置:确保你的DevEco Studio和相关工具具有足够的权限来访问设备文件系统。在某些情况下,权限不足也会导致Device File Browser显示为空。
- 更新和重启:确保你的DevEco Studio和HarmonyOS系统都是最新版本,并尝试重启DevEco Studio和设备,以解决可能存在的软件问题。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。他们将能够提供更具体的帮助和指导。