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

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

cke_208.png

context.getOrCreateDistributedDir失败,错误码200怎么解决?


更多关于HarmonyOS鸿蒙Next中ets如何读写非沙箱路径下的文件?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

楼主您好,关于读取静态文件可以通过$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.openSyncfs.readSyncfs.writeSync等API进行操作。

  1. 获取文件路径:使用@ohos.file.path模块的getAbsolutePath方法获取文件的绝对路径。
  2. 打开文件:使用fs.openSync方法打开文件,返回文件描述符。
  3. 读写文件:使用fs.readSyncfs.writeSync方法进行文件的读写操作。
  4. 关闭文件:使用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_MEDIAohos.permission.WRITE_MEDIA权限。

在HarmonyOS鸿蒙Next中,ets应用默认运行在沙箱环境中,无法直接访问非沙箱路径。若需读写非沙箱路径下的文件,需通过系统API申请权限,并使用ohos.file.fs模块的openSyncreadSyncwriteSync等方法操作文件。具体步骤如下:

  1. 申请权限:在config.json中声明ohos.permission.READ_MEDIAohos.permission.WRITE_MEDIA权限。
  2. 获取文件路径:通过系统API获取非沙箱路径。
  3. 读写文件:使用ohos.file.fs模块进行文件操作。

注意:操作非沙箱路径需谨慎,确保符合安全规范。

回到顶部