HarmonyOS鸿蒙Next中怎么把文件存到文件app可以访问的路径

HarmonyOS鸿蒙Next中怎么把文件存到文件app可以访问的路径 目前文件存储都是根据context的cacheDir的目录存在,怎么存到外面,让文件app可以访问呢?文件app无法文档应用的文件夹。

3 回复

您可以使用FilePicker来实现文件保存到本地系统管理,FilePicker对应的官网链接【https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/save-user-file-V5】

问题处理思路:可以先通过picker获取到要选择或者保存文件的公共路径,然后通过fs.copyFile进行文件复制,核心示例代码如下

save() {
  const documentSaveOptions = new picker.DocumentSaveOptions(); // 创建文件管理器保存选项实例
  documentSaveOptions.newFileNames = ["icon.txt"]; // 保存文件名(可选)
  const documentViewPicker = new picker.DocumentViewPicker;
  documentViewPicker.save(documentSaveOptions)
    .then(async (documentSaveResult) => {
      // 获取到到图片或者视频文件的URI后进行文件读取等操作
      let uri = documentSaveResult[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:Error) => {
      console.error(Invoke documentPicker.select failed, message is ${err.message});
    })
}

更多关于HarmonyOS鸿蒙Next中怎么把文件存到文件app可以访问的路径的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,若要将文件存储到文件应用可以访问的路径,可以使用Context提供的getExternalFilesDirgetExternalStoragePublicDirectory方法。getExternalFilesDir用于获取应用专属的外部存储目录,而getExternalStoragePublicDirectory用于获取公共存储目录,如DownloadsPictures

具体步骤如下:

  1. 使用getExternalFilesDir获取应用专属外部存储目录:

    let context = ...; // 获取Context对象
    let fileDir = context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);
    

    文件将存储在/storage/emulated/0/Android/data/<package_name>/files/Documents路径下。

  2. 使用getExternalStoragePublicDirectory获取公共存储目录:

    let publicDir = context.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
    

    文件将存储在/storage/emulated/0/Download路径下,文件应用可直接访问。

  3. 创建并写入文件:

    let file = new File(fileDir, "example.txt");
    file.writeText("Hello, HarmonyOS");
    

通过上述方法,文件将存储在指定路径,文件应用可以访问。

在HarmonyOS鸿蒙Next中,将文件存储到文件应用可访问的路径,可以通过以下步骤实现:

  1. 获取公共目录路径:使用Context.getExternalFilesDir()方法获取公共存储目录路径,如DownloadsDocuments

  2. 创建文件:在获取的路径下创建文件,如File.createNewFile()

  3. 写入文件:使用FileOutputStreamBufferedWriter将数据写入文件。

  4. 更新媒体库:调用MediaScannerConnection.scanFile()更新媒体库,使文件应用能立即访问新文件。

通过以上步骤,文件将被存储在文件应用可访问的公共目录中。

回到顶部