HarmonyOS鸿蒙Next中怎么把文件存到文件app可以访问的路径
HarmonyOS鸿蒙Next中怎么把文件存到文件app可以访问的路径 目前文件存储都是根据context的cacheDir的目录存在,怎么存到外面,让文件app可以访问呢?文件app无法文档应用的文件夹。
您可以使用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提供的getExternalFilesDir或getExternalStoragePublicDirectory方法。getExternalFilesDir用于获取应用专属的外部存储目录,而getExternalStoragePublicDirectory用于获取公共存储目录,如Downloads或Pictures。
具体步骤如下:
-
使用
getExternalFilesDir获取应用专属外部存储目录:let context = ...; // 获取Context对象 let fileDir = context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);文件将存储在
/storage/emulated/0/Android/data/<package_name>/files/Documents路径下。 -
使用
getExternalStoragePublicDirectory获取公共存储目录:let publicDir = context.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);文件将存储在
/storage/emulated/0/Download路径下,文件应用可直接访问。 -
创建并写入文件:
let file = new File(fileDir, "example.txt"); file.writeText("Hello, HarmonyOS");
通过上述方法,文件将存储在指定路径,文件应用可以访问。
在HarmonyOS鸿蒙Next中,将文件存储到文件应用可访问的路径,可以通过以下步骤实现:
-
获取公共目录路径:使用
Context.getExternalFilesDir()方法获取公共存储目录路径,如Downloads或Documents。 -
创建文件:在获取的路径下创建文件,如
File.createNewFile()。 -
写入文件:使用
FileOutputStream或BufferedWriter将数据写入文件。 -
更新媒体库:调用
MediaScannerConnection.scanFile()更新媒体库,使文件应用能立即访问新文件。
通过以上步骤,文件将被存储在文件应用可访问的公共目录中。

