HarmonyOS鸿蒙Next中ets如何读写非沙箱路径下的文件?
HarmonyOS鸿蒙Next中ets如何读写非沙箱路径下的文件?

context.getOrCreateDistributedDir失败,错误码200怎么解决?
更多关于HarmonyOS鸿蒙Next中ets如何读写非沙箱路径下的文件?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
楼主您好,关于读取静态文件可以通过$r方式读取,也可以通过context对象来获取相应的文件目录,详情可参考以下链接:
https://docs.openharmony.cn/pages/v3.2Beta/en/application-dev/ui/ts-resource-access.md/
https://docs.openharmony.cn/pages/v3.2Beta/zh-cn/application-dev/reference/apis/js-apis-Context.md/
更多关于HarmonyOS鸿蒙Next中ets如何读写非沙箱路径下的文件?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
关于您截图报错的信息,麻烦把您的调用接口的代码发一下。
您的sdk版本有点旧,请升级一下最新版本,然后if(err)的判断请换成if(err.code),
在HarmonyOS鸿蒙Next中,ets(Extended TypeScript)可以通过@ohos.file.fs模块来读写非沙箱路径下的文件。首先,需要获取文件的绝对路径,然后使用fs.openSync、fs.readSync、fs.writeSync等API进行操作。
- 获取文件路径:使用
@ohos.file.path模块的getAbsolutePath方法获取文件的绝对路径。 - 打开文件:使用
fs.openSync方法打开文件,返回文件描述符。 - 读写文件:使用
fs.readSync和fs.writeSync方法进行文件的读写操作。 - 关闭文件:使用
fs.closeSync方法关闭文件。
示例代码如下:
import fs from '@ohos.file.fs';
import path from '@ohos.file.path';
// 获取文件绝对路径
let filePath = path.getAbsolutePath('/data/storage/el2/base/files/example.txt');
// 打开文件
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
// 写入文件
let writeBuffer = new ArrayBuffer(1024);
let writeData = new Uint8Array(writeBuffer);
writeData.set(new TextEncoder().encode('Hello, HarmonyOS!'));
fs.writeSync(file.fd, writeBuffer);
// 读取文件
let readBuffer = new ArrayBuffer(1024);
fs.readSync(file.fd, readBuffer);
let readData = new Uint8Array(readBuffer);
let text = new TextDecoder().decode(readData);
console.log(text);
// 关闭文件
fs.closeSync(file.fd);
注意:操作非沙箱路径下的文件需要相应的权限,确保在config.json中配置了ohos.permission.READ_MEDIA和ohos.permission.WRITE_MEDIA权限。
在HarmonyOS鸿蒙Next中,ets应用默认运行在沙箱环境中,无法直接访问非沙箱路径。若需读写非沙箱路径下的文件,需通过系统API申请权限,并使用ohos.file.fs模块的openSync、readSync、writeSync等方法操作文件。具体步骤如下:
- 申请权限:在
config.json中声明ohos.permission.READ_MEDIA和ohos.permission.WRITE_MEDIA权限。 - 获取文件路径:通过系统API获取非沙箱路径。
- 读写文件:使用
ohos.file.fs模块进行文件操作。
注意:操作非沙箱路径需谨慎,确保符合安全规范。

