HarmonyOS鸿蒙Next中LiteWearable设备怎样对文件进行读写操作

HarmonyOS鸿蒙Next中LiteWearable设备怎样对文件进行读写操作 在使用LiteWearable设备开发一个课表APP,想着用文本文档来存储课程的数据,参考官方的@system.file文档,然后就遇到了以下的问题:

1.没办法访问’internal://app/’,参考官方给出的例程

list() {
file.list({
uri: 'internal://app/',
success: function(data) {
console.info(JSON.stringify(data.fileList));
},
fail: function(data, code) {
console.error('call fail callback fail, code: ' + code + ', data: ' + data);
},
});
}

在模拟器和FIT4手表上都试验过(模拟器上试验过API10到API19的版本,手表版本是6.0.0.22)均会报301错误,尝试过在config.json里配置过requestPermissions,依旧报错301

2.如果要在internal://app/下创建文件的话应该放在项目的哪个路径下,看system.file的文档好像没有创建文档的选项。。。

在网上看了很多相似的帖子和项目但有点线索然后就没有然后了,只能自己提问看看,期待一下万能的社区了QAQ


更多关于HarmonyOS鸿蒙Next中LiteWearable设备怎样对文件进行读写操作的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

尊敬的开发者您好!

1、LiteWearable没有模拟器,只有仿真器simulator,仿真器不支持文件操作。手表真机上尝试运行问题代码,可以正常获取internal://app下的rawfile目录,没有报错。如果uri是一个空目录(比如internal://app/pic目录下没有文件),则会报code:300, data:I/O error。您确定FIT4手表也是报错301吗?

2、可以使用file.writeText,如果目标文件不存在则会自动创建。

更多关于HarmonyOS鸿蒙Next中LiteWearable设备怎样对文件进行读写操作的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你可以先尝试 app替换为自己的包名,然后 mkdir,查看创建的路径在哪里 然后操作文件的时候,使用access,进行判断,目录或者文件是否存在

同问,目前看文档,虽然 file和fetch写着是废弃的api,但明确标识 会持续对 轻智能穿戴进行维护,以前文档中都不写

在HarmonyOS Next中,LiteWearable设备通过@ohos.file.fs文件系统API进行文件读写。主要使用fs.openSyncfs.writeSyncfs.readSyncfs.closeSync等同步接口。操作前需在module.json5中声明ohos.permission.FILE_ACCESSohos.permission.READ_MEDIA权限。文件路径通常位于应用沙箱目录内,如context.filesDir

在HarmonyOS Next中,LiteWearable设备(如手表)的文件系统访问方式与标准HarmonyOS应用有所不同,主要基于其受限的存储环境。

针对你的问题:

  1. 无法访问 internal://app/ 并报错301: 这个错误通常表示权限问题或路径不可用。在LiteWearable设备上,应用的私有文件目录路径应使用 internal://cache/internal://files/,而不是 internal://app/internal://app/ 可能主要用于安装包资源,运行时写入受限。请将 uri 改为 'internal://files/''internal://cache/' 再尝试 list() 操作。同时,确保在 module.json5 中已声明必要的文件访问权限(如 ohos.permission.FILE_ACCESSohos.permission.MEDIA_LOCATION 等,根据实际需要)。

  2. internal://app/ 下创建文件: 如前所述,不应直接向 internal://app/ 写入文件。应用的可写私有目录是 internal://files/(持久存储)和 internal://cache/(临时缓存)。创建文件时,使用 file.open() 并指定可写目录的URI,例如:

    file.open({
      uri: 'internal://files/your_file.txt',
      mode: 'w' // 写入模式
    }, ...);
    

    如果文件已存在,'w' 模式会覆盖;'a' 模式可追加。

建议操作步骤

  • 将课程数据文件存储在 internal://files/ 目录下(例如 internal://files/schedule.txt)。
  • 使用 file.write() 写入数据,file.read() 读取数据。
  • 确保权限声明正确,并在首次读写前通过 abilityAccessCtrl 请求用户授权。

这样可解决文件读写问题,并符合LiteWearable设备的存储规范。

回到顶部