[文章]openHarmony之文件管理功能简析

阅读量0
0
2
一、文件打开
文件打开方法,有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);

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友