HarmonyOS文件读写相关问题?

通过文件选择器,选择了一个文件,详细目录是:file://docs/storage/Users/currentUser/Download/123.mp3

调用写的这个方法读取这个文件时,一直提示文件不存在。

async function copyFile(context: common.UIAbilityContext): Promise<void> {
  //拷贝文件
  let applicationContext = context.getApplicationContext();
  let cacheDir = applicationContext.cacheDir;
  let tempDir = applicationContext.tempDir;
  console.error("沙箱路径:" + tempDir)
  let musicPath='file://docs/storage/Users/currentUser/Download/123.mp3';
  let fileUriObject = new fileUri.FileUri(musicPath);
  console.error("文件路径:"+fileUriObject.path)
  console.error("文件名称:"+fileUriObject.name)
  fs.stat(fileUriObject.path+'/'+fileUriObject.name).then((stat: fs.Stat) => {
    console.error("文件大小是:" + stat.size);
  }).catch((err: BusinessError) => {
    console.error("读取文件失败: " + err.message + ", error code: " + err.code);
  });

}

输入日志:

E     沙箱路径:/data/storage/el2/base/temp  
E     文件路径:/storage/Users/currentUser/Download/123.mp3  
E     文件名称:123.mp3  
E     读取文件失败: No such file or directory, error code: 13900002 

文件读写权限是已经申请了的。

想实现选中一个文件之后,然后使用c语言来修改这个文件,并且保存文件然后再返回给ArkTS层,目前这个文件路径这里有点一头雾水,请解答一下。

例如需要读取文件:file://docs/storage/Users/currentUser/Download/123.mp3下面这个C代码中的xxx应该是什么值?怎么设置这个值?

FILE *file = fopen("xxx", "rb"); // 替换input_filename为你的输入文件名变量
if (file) {
  fseek(file, 0, SEEK_END);
  long size = ftell(file);
  fclose(file);
  OH_LOG_ERROR(LOG_APP, "文件大小: %{public}s", size);
}else{
  OH_LOG_ERROR(LOG_APP, "文件不存在: %{public}s", argv[2]);
}
阅读 729
1 个回答