购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5.10 实战:使用DataAbilityHelper访问文件

本节演示如何通过DataAbilityHelper类来访问当前应用的文件数据。创建一个名为DataAbilityHelperAccessFile的应用作为演示。

下面介绍DataAbilityHelper具体的使用步骤。

5.10.1 创建DataAbility

在DevEco Studio中,可以通过如图5-20所示的方式创建一个Empty Data Ability。

根据如图5-21所示的引导创建一个名为UserDataAbility的Data。

图5-20 创建一个Empty Data Ability

图5-21 创建一个名为UserDataAbility的Data

自定义生成的UserDataAbility代码如下:

上述代码除了基本的增删改查、打开文件、获取URI类型、获取文件类型外,还有一个回调,再加上一个onStart方法,总共是9个方法。

UserDataAbility自动在配置文件中添加了相应的配置,内容如下:

从上述配置可以看出,

· type: 类型设置为data。

· uri: 对外提供的访问路径,全局唯一。

· permissions: 访问该Data Ability时需要申请的访问权限。

5.10.2 修改UserDataAbility

由于本示例只涉及文件,因此修改UserDataAbility时只需重写onStart和openFile方法:

initFile方法用于将源文件写入目标文件。this.getDataDir()方法可以获取到数据目录,目标文件最终写入该目录下。

HarmonyOS提供了一个ResourceManager资源管理器,通过该资源管理器可以方便读取到resouece目录下的资源文件。其中,RawFileEntry代表rawfile目录下的文件。可以通过rawFileEntry.openRawFile()方法方便地获取到指定文件。

最后在方法返回前,需要通过MessageParcel对FileDescriptor进行复制。

5.10.3 创建文件

在resouece目录的rawfile目录下创建如图5-22所示的测试用文件users.txt。

该文件的测试内容比较简单,就是一个用户的名字:

   Way Lau

图5-22 创建一个文件

5.10.4 修改MainAbilitySlice

修改MainAbilitySlice的onStart方法,代码如下:

在上述方法中,在Text中添加点击事件来触发访问文件的操作。

getFile方法用于访问文件。借助DataAbilityHelper类的openFile方法来访问当前UserDataAbility提供的文件数据。

FileUtils.getFileContent方法用于将文件内容转为字符串,这样可以在日志中方便查看文件的具体内容。FileUtils工具类稍后介绍。

注:上述代码中访问的URI与UserDataAbility在配置文件中添加的URI基本是一致的,唯一的区别是上述代码中访问的URI用3个斜杠。

5.10.5 创建FileUtils类

FileUtils类是一个工具类,其中getFileContent方法用于将文件内容转为字符串,代码如下:

5.10.6 运行

运行应用后,效果如图5-23所示。

图5-23 运行应用的效果

点击“你好,世界”触发了访问文件的操作,可以看到控制台HiLog输出内容如下:

    08-29 23:46:36.416 18923-18923/com.waylau.hmos.dataabilityhelperaccessfile I
00001/UserDataAbility:  fd: java.io.FileDescriptor@900efa4
    08-29 23:46:36.417 18923-18923/com.waylau.hmos.dataabilityhelperaccessfile I
00001/MainAbilitySlice:  fd: java.io.FileDescriptor@32f08c2
    08-29 23:46:36.417 18923-18923/com.waylau.hmos.dataabilityhelperaccessfile I
00001/MainAbilitySlice:  file content: Way Lau

至此,DataAbilityHelper访问文件的示例演示完毕。 /x4QjAQoEZsaBDXG42xnND6e5BiPE7sY4dKA/ymsGi9pWDmQCp3QMzkDiBujua2A

点击中间区域
呼出菜单
上一章
目录
下一章
×