当前位置: 首页 > 科技观察

OpenHarmony——文件管理系列之一

时间:2023-03-16 10:17:48 科技观察

更多内容请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com前言本系列记录openHarmony团队在学习实践中踩过的坑和填坑记录。社区可能已经共享了相关文档。文件管理文件管理的功能点有很多。团队会不断学习和实验,总结出相应的知识点分享给大家。官方接口API:https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-fileio-0000001168366687https://gitee.com/openharmony/interface_sdk-js/blob/master/api/@ohos.fileio.d.ts1.FileOpen文件打开方法有3个参数path、flags和mode。其中,flags表示打开文件,默认以只读方式打开;mode,如果创建文件,指定文件的权限,默认给0o666。//异步方法一:以promise的形式打开文件letfd=awaitfileio.open(path,0o1,0o0200);//异步方法二:以回调的形式打开文件awaitfileio.open(path,0,function(err,fd){});//同步打开文件letfd=fileio.openSync(path,flags,mode);2.写入文件。官方提供了多种实现方式,比如:letfd=fileio。openSync(fpath,0o102,0o666);//异步方法一:以promise形式返回结果letnum=awaitfileio.write(fd,"hello,world");//返回结果:Promise//异步方法2:使用回调形式返回结果fileio.write(fd,"hello,world",function(err,bytesWritten){if(!err){console.log(bytesWritten)}});//同步方法letnum=fileio.writeSync(fd,"你好,世界");在写入文件之前,如果写入文件的路径不存在,直接写入路径会报错,需要判断路径是否存在后根据业务情况进行处理。设想的处理方式有两种,我们采用第一种方案:1)根据原文件路径创建相关文件夹,完成创建路径所需的文件夹后创建并写入文件;2)提示用户,写入路径不存在;创建文件夹的界面如下所述。3、文件读取文件读取也有相应的接口,例如:letfd=fileio.openSync(path,0o2);letbuf=newArrayBuffer(4096);//异步方法一:以promise形式返回结果letres=awaitfileio.read(fd,buf);//返回结果:Promise//异步方式二:使用回调返回结果awaitfileio.read(fd,buf,function(err,readOut){if(!err){console.log(String.fromCharCode.apply(null,newUint8Array(readOut.buffer)))}});//同步方法letnum=fileio.readSync(fd,buf);4.文件路径的判断和读取在写入之前,需要判断文件路径是否存在,可以使用如下接口进行判断。//异步方法一:以promise的形式返回结果fileio.access(path).then(function(err){//文件存在,做点什么}).catch(function(e){//Enterif条件不满足});//异步方法2:使用回调形式返回结果fileio.access(path,function(err){});//同步方法try{/***path:绝对路径要访问的文件的路径。*mode:确认当前进程是否有相应权限:0:确认文件是否存在。1:确认当前进程是否有可执行权限。2:确认当前进程是否有写权限。4:确认当前进程是否有读权限。**/fileio.accessSync(path,mode);}catch(e){//不满足条件则进入}5.创建文件夹创建文件夹的方法如下,如果需要设置文件夹的访问权限,可以设置mode参数值://异步方法一:以promise格式创建文件夹awaitfileio.mkdir(path,mode).then(function(err){//目录创建成功,做点什么}).catch(function(e){});//异步方法2:使用回调创建文件夹awaitfileio.mkdir(path,mode,function(err){if(!err){//dosomething}});//同步创建文件夹fileio.mkdirSync(path,mode);6.个人总结本次分享的内容只是文件管理模块学习研究的开始,希望与大家共同成长。更多信息请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com