HarmonyOS鸿蒙Next中ArkTS如何实现读取设备本地文件和数据库

HarmonyOS鸿蒙Next中ArkTS如何实现读取设备本地文件和数据库 harmony有提供类似android系统的sqlite数据库吗?如何操作数据库?如何进行IO操作,读取和写本地文件?

6 回复

读取数据库都要使用到沙箱的

更多关于HarmonyOS鸿蒙Next中ArkTS如何实现读取设备本地文件和数据库的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


看了关于文件管理的文档,里面传的路径都是沙箱路径,是不是每个应用读写的文件只能是当前应用所在的沙箱位置,不能像android系统中一样,访问内部存储空间的根目录?比如在其系统储存空间根目录重新建立一个新的文件夹去保存类似日志.txt文件?

你要访问根目录的话,就只能通过hdc命令。论坛好像有人有问过,之前有看到过。官方反正只提供了这种沙箱方式,大部分需求也够用了,

在HarmonyOS鸿蒙Next中,ArkTS通过@ohos.fileio@ohos.data.relationalStore模块实现读取设备本地文件和数据库。

  1. 读取本地文件:

    • 使用fileio.openSync打开文件,fileio.readSync读取文件内容,fileio.closeSync关闭文件。
    • 示例代码:
      import fileio from '@ohos.fileio';
      
      let filePath = 'path/to/file.txt';
      let fd = fileio.openSync(filePath, 0o2);
      let buffer = new ArrayBuffer(1024);
      let num = fileio.readSync(fd, buffer);
      let content = String.fromCharCode.apply(null, new Uint8Array(buffer.slice(0, num)));
      fileio.closeSync(fd);
      
  2. 读取数据库:

    • 使用relationalStore.getRdbStore获取数据库实例,executeSql执行SQL查询。
    • 示例代码:
      import relationalStore from '@ohos.data.relationalStore';
      
      let context = getContext(this);
      let config = {
        name: 'test.db',
        securityLevel: relationalStore.SecurityLevel.S1
      };
      let rdbStore = await relationalStore.getRdbStore(context, config);
      let sql = 'SELECT * FROM table_name';
      let resultSet = await rdbStore.executeSql(sql);
      

ArkTS通过这些模块直接操作本地文件和数据库,无需依赖Java或C语言。

在HarmonyOS鸿蒙Next中,使用ArkTS读取设备本地文件和数据库可以通过以下方式实现:

  1. 读取本地文件:

    • 使用@ohos.fileio模块的openread方法打开并读取文件。
    • 示例代码:
      import fileio from '@ohos.fileio';
      let filePath = 'path/to/file.txt';
      let fd = fileio.open(filePath, 0o2); // 打开文件
      let buffer = new ArrayBuffer(1024);
      fileio.read(fd, buffer); // 读取文件内容
      fileio.close(fd); // 关闭文件
      
  2. 读取数据库:

    • 使用@ohos.data.relationalStore模块进行数据库操作。
    • 示例代码:
      import relationalStore from '@ohos.data.relationalStore';
      let store;
      relationalStore.getRdbStore(context, { name: 'myDatabase.db' }, function (err, rdbStore) {
          store = rdbStore;
          let sql = 'SELECT * FROM myTable';
          store.query(sql, [], function (err, resultSet) {
              // 处理查询结果
          });
      });
      

通过这些方法,ArkTS可以高效地读取设备本地文件和数据库。

回到顶部