OpenHarmony—文件管理系列之一

系统 OpenHarmony
本系列记录团队openHarmony 的学习和实践中,所踩过的坑以及填坑的记录,可能社区已有分享相关的文档。

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

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

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

前言

本系列记录团队openHarmony 的学习和实践中,所踩过的坑以及填坑的记录,可能社区已有分享相关的文档。

文件管理

文件管理的功能点较多,团队将持续学习试验,并总结相应的知识点与大家分享。官方接口API:

https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-fileio-0000001168366687

https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.fileio.d.ts

一、文件打开

文件打开方法,有3个参数path、flags、mode。其中flags表示 打开文件 ,默认以只读方式打开 ;mode,若创建文件 , 则指定文件的权限,默认给定0o666 。

// 异步方式1:promise形式打开文件
let fd = await fileio.open(path, 0o1, 0o0200);
// 异步方式2:使用callback形式打开文件
await fileio.open(path, 0, function(err, fd) {
});
// 同步方式打开文件
let fd = fileio.openSync(path,flags,mode);

二、文件写入

文件写入,官方提供了多种方式可以实现,比如:

let fd = fileio.openSync(fpath, 0o102, 0o666);
// 异步方式1:promise形式返回结果
let num = await fileio.write(fd, "hello, world");// 返回结果:Promise<number>
// 异步方式2:使用callback形式返回结果
fileio.write(fd, "hello, world", function (err, bytesWritten) {
if (!err) {
console.log(bytesWritten)
}
});
// 同步方式
let num = fileio.writeSync(fd, "hello, world");

文件写入前,如果写入文件的路径不存在,则直接写入会报错,所以需要判断路径是否存在后,需要根据业务情况进行处理。设想的处理方式有2种,我们则采用第一种方案:

1)根据原定文件路径,创建相关文件夹,完成创建路径所需的文件夹后,创建文件并写入;

2)提示用户,写入路径不存在;

创建文件夹的接口,下面会由讲述。

三、文件读取

文件读取,也有相应的接口,例如:

let fd = fileio.openSync(path, 0o2);
let buf = new ArrayBuffer(4096);
// 异步方式1:promise形式返回结果
let res = await fileio.read(fd, buf); // 返回结果:Promise<Readout>
// 异步方式2:使用callback形式返回结果
await fileio.read(fd, buf, function (err, readOut) {
if (!err) {
console.log(String.fromCharCode.apply(null, new Uint8Array(readOut.buffer)))
}
});
// 同步方式
let num = fileio.readSync(fd, buf);

四、文件路径判断

读取写入之前,都需要判断下文件路径是否存在,那么可用下面这个接口判断。

// 异步方式1:promise形式返回结果
fileio.access(path)
.then(function(err) {
// 文件存在,do something
}).catch(function(e) {
//若不符合条件则进入
});
// 异步方式2:使用callback形式返回结果
fileio.access(path, function (err) {
});
// 同步方式
try {
/**
* path:待访问文件的绝对路径。
* mode:确认当前进程是否具有对应权限:
0:确认文件是否存在。
1:确认当前进程是否具有可执行权限。
2:确认当前进程是否具有写权限。
4:确认当前进程是否具有读权限。
**/
fileio.accessSync(path, mode);
} catch(e) {
//不符合条件则进入
}

五、创建文件夹

创建文件夹的方法如下,如果需要设置文件夹的访问权限,可以设置mode参数值:

// 异步方式1:promise形式创建文件夹
await fileio.mkdir(path, mode)
.then(function(err) {
// 目录创建成功,do something
}).catch(function (e){
});
// 异步方式2:使用callback形式创建文件夹
await fileio.mkdir(path, mode, function(err) {
if (!err) {
// do something
}
});
// 同步方式创建文件夹
fileio.mkdirSync(path, mode);

六、个人总结

本次分享的内容仅是文件管理模块学习研究的开端,希望与大家共同成长。

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

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

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

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

2022-03-04 15:43:36

文件管理模块Harmony鸿蒙

2022-03-30 14:07:47

Harmony操作系统鸿蒙

2022-03-15 15:24:53

操作系统RTOSAT模块

2022-05-16 11:50:45

HDF驱动框架

2022-03-29 10:04:44

APIHarmony文件管理

2009-06-01 11:28:48

EquinoxOSGi入门

2022-04-18 10:47:55

UI框架鸿蒙操作系统

2022-03-10 14:45:23

HarmonyAPI操作系统

2021-07-07 09:18:00

Java并发编程

2023-06-27 15:12:46

C++三方库移植

2019-01-10 08:33:17

物联网IoT机器

2018-04-12 21:31:31

物联网发展趋势互联网

2011-10-11 10:39:24

2021-09-26 05:05:46

GoFiber Express

2021-11-25 09:54:54

鸿蒙HarmonyOS应用

2009-09-22 13:14:35

ibmdwSOA

2022-04-01 16:04:33

Harmonytabs容器鸿蒙

2023-11-10 10:08:23

2021-11-05 15:00:33

鸿蒙HarmonyOS应用

2012-09-26 09:52:57

项目项目回顾时间管理
点赞
收藏

51CTO技术栈公众号