社区编辑申请
注册/登录
OpenHarmony文件管理API实践
系统 OpenHarmony
文件管理API 从Version 6 开始支持,由于目前华为对公共文件访问的API暂时还没开放,所以目前只能对应用私有目录下的文件操作权限。

​想了解更多内容,请访问:​

​51CTO和华为官方合作共建的鸿蒙技术社区​

​https://ost.51cto.com​

前言

文件管理在我们日常使用手机中是一个非常重要的功能,我们可以通过文件管理相关 API 实现对指定文件的删除、复制、移动、压缩解压缩等操作。文件管理API 从Version 6 开始支持,由于目前华为对公共文件访问的API暂时还没开放,所以目前只能对应用私有目录下的文件操作权限

参考资料

HarmonyOS文件管理JS API。

OpenHarmony API。

获取当前应用私有目录。

使用该功能模块对文件/目录进行操作前,需要先获取其绝对路径,获取方式及其接口用法请参考:​​Ability上下文。​

在使用AbilityContext的功能前,需要通过getContext()先获取Context对象。在使用AbilityContext的功能前,需要通过getContext()先获取Context对象。

示例:

import ability_featureability from '@ohos.ability.featureAbility'
var context = ability_featureability.getContext();

获取应用内部存储目录除了可以通过AbilityContext之外,还可以使用特定scheme(只支持internal)来访问预定义的一些文件存取目录,详细描述见​​存储目录定义​​。

不同设备上对应的实际位置不同。对于不在下列目录下的文件访问将被拒绝(禁止使用../等方式访问父目录)。

通过实际代码操作发现context.getFilesDir()获取的目录/data/data/应用包名/files跟internal://app/的目录是一样的,这个在后面的示例代码中有体现。

创建文件目录

官方API文档提供了多种创建文件目录的方式,这里只对其中一种方式进行演示,其他方式可自行验证。

mkdir(path:string, mode?: number): Promise。

以异步方法创建目录,使用promise形式返回结果。这里我们通过context.getFilesDir()获取到当前的应用的私有目录,并在该文件夹下创建了4个文件夹。

获取指定路径下的所有文件

获取指定目录下的所有文件需要用到system.file模块。

import file from '@system.file';

复制虽然官方文档说从API Version 6开始,该接口不再维护,推荐使用新接口'@ohos.fileio'。

但是我在fileio模块中并未找到相关接口,不知道是文档没有更新还是怎么回事,所以只能继续使用system.file模块了,期待华为后面更新文档。

system.file模块接口文档参考​​获取指定路径下全部文件的列表​​。

示例:

在这里我们可以看到我通过获取internal://app/目录下的所有文件,可以看到我们上面在/data/data/应用包名/files下创建的文件夹。

获取文件详细信息

以异步方法获取文件信息,使用callback形式返回结果。fileio.stat()。

参数:

示例:

fileio.stat(path, function (err, stat) {    
});

删除目录

以异步方法删除目录,使用callback形式返回结果。fileio.rmdir (BETA)7+。

参数:

示例:

fileio.rmdir(path, function(err){ 
});

删除文件

以异步方法删除文件,使用callback形式返回结果。fileio.unlink()。

参数:

示例:

await fileio.unlink(path, function(err) {
if (!err) {
// do something
}
});

文件的复制、移动操作

以异步方法复制文件,使用callback形式返回结果。fileio.copyFile()

参数:

示例:

await fileio.copyFile(src, dest, function (err) { 
});

总结:以上只是部分接口实践,其他接接口大家可以参照华为官方API参考和openHarmony源码自行实践,这里推荐大家随时随地关注官方文档的更新,因为有些API虽然文档中介绍了,但是实际引用的时候发现相关功能并未实现。所以我们要时时刻刻的关注官方文档更新情况。

​想了解更多内容,请访问:​

​51CTO和华为官方合作共建的鸿蒙技术社区​

​https://ost.51cto.com​

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2022-03-10 14:45:23

HarmonyAPI操作系统

2022-04-18 10:37:01

鸿蒙操作系统开发工具

2022-05-24 15:06:57

AbilityeTS FA鸿蒙

2022-04-15 14:31:02

鸿蒙操作系统

2022-06-15 08:21:49

Linux运维工程师

2022-05-11 15:08:52

驱动开发系统移植

2022-06-06 10:55:51

本地服务鸿蒙

2022-06-07 10:33:29

Camera组件鸿蒙

2022-06-13 14:18:39

电源管理子系统耗电量服务

2022-05-24 15:55:37

避障小车华为

2022-04-20 20:28:40

HDF 驱动框架鸿蒙操作系统

2022-04-02 20:45:04

Hi3516开发板操作系统鸿蒙

2022-05-11 14:54:02

输入法框架鸿蒙

2022-06-09 14:40:14

系统移植鸿蒙

2022-06-15 16:16:21

分布式数据库鸿蒙

2022-06-15 08:25:07

Python天气数据可视化分析

2022-03-28 15:40:34

harmony鸿蒙操作系统

2022-04-07 14:33:31

操作系统鸿蒙HarmonyOS

2022-05-25 07:11:13

2022-05-16 11:50:45

HDF驱动框架

同话题下的热门内容

HarmonyOS - HDC命令与ADB命令使用对比OHOS构建自定义服务实战啃论文俱乐部—数据密集型应用内存压缩HarmonyOS - 自定义组件之计时器基于OpenHarmony3.1的购物车应用的实现HarmonyOS - 方舟开发框架ArkUI 流光按钮效果OpenHarmony3.1-Ace-Formcomponent源码解析OpenHarmony HiSysEvent打点调用实践(L2)

编辑推荐

HarmonyOS 2.0鸿蒙第二期开发者Beta公测申请指南HarmonyOS LYEVK-3861开发板播放《蜜雪冰城》鸿蒙HarmonyOS分布式软总线:构建低时延、高带宽的多设备虚拟网络华为HarmonyOS的强势突围: 直面物联网迷宫的蓄力进击鸿蒙HarmonyOS2.0发布会现场回忆录
我收藏的内容
点赞
收藏

51CTO技术栈公众号