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

OpenHarmonyJavaScript(文件管理API)源码分析

时间:2023-03-17 01:20:42 科技观察

更多内容请访问:Harmonyos技术社区https://harmonyos.51cto.com1.介绍手机、平板上的文件管理,非常重要在智能屏幕等设备上运行。通过文件管理相关的API,我们可以实现对指定文件的删除、复制、移动、压缩、解压等操作。本文通过一个小DEMO来演示如何使用官方API实现对指定文件的相关操作。1.1OpenHarmony架构图1.2文件管理Demo效果演示2.基础知识注意:现在支持APIVersion6。目前只能对应用私有目录下的文件操作权限进行操作。如果要实现类似的文件管理应用,需要等待更高权限的开放。2.1主要API2.2参考HarmonyOSjs-apis-fileio(文件管理)OpenHarmonyjs-apis-fileio.md(文件管理)3.示例Demo当前文件管理API支持手机、平板、智慧屏调用,暂不支持还支持智能穿戴设备上的通话。使用该功能模块操作文件/目录前,需要获取其绝对路径。获取方式及接口使用请参考能力脉络。3.1获取AbilityContext在使用AbilityContext的功能之前,需要通过getContext()获取Context对象。在使用AbilityContext的功能之前,需要通过getContext()获取Context对象。示例importability_featureabilityfrom'@ohos.ability.featureAbility'varcontext=ability_featureability.getContext();3.2获取应用程序目录路径目录类型如下图所示:“绝对文件/目录路径”=“应用程序目录路径”+“文件/directoryname",通过上述接口获取应用目录路径dir,文件名为"xxx.txt",文件的绝对路径为:letpath=dir+"xxx.txt";示例context.getFilesDir().then((data)=>{console.info('Cachedirectoryobtained.Data:'+data+"getFilesDir");this.filePath=data;this.mDirPath=this.filePath+"/cache_files/";this.findFile();}).catch((error)=>{console.error('Failedtoobtainthecachedirectory.Cause:'+error.message);})3.3创建测试文件在对文件进行操作之前,我们首先创建一个几个测试文件,我们可以通过以下代码示例成功创建文件createTestFiles(){for(leti=0;i<4;i++){file.writeText({uri:'internal://app//cache_files/'+"文件管理器测试"+i+".txt",text:'Textthatjustfortest.'+i,success:function(){console.log('callwriteTextsuccess.');},fail:function(data,code){console.error('callfailcallbackfail,code:'+code+',data:'+data);},});}}3.4导入文件管理模块importfileiofrom'@ohos.fileio';3.5获取文件详细信息异步获取文件信息,回调形式返回结果fileio.stat(path,function(err,统计){});使用同步方式获取文件信息letstat=fileio.statSync(path);以异步方式为例,我们可以获取文件大小等信息,代码如下:letpath=that.mDirPath+any[i].uri.substring(index+1);fileio.stat(path,function(err,stat){console.info("Getfilestatsuccess:"+"fileSize:"+stat.size+"------"+"fileName:"+any[i].uri.substring(index+1));});日志截图如下:3.6删除文件异步方式删除文件,以回调的形式返回结果fileio.unlink(path,function(err){if(!err){//文件为删除成功}});以同步方式删除文件fileio.unlinkSync(path);以异步方式为例,执行文件删除操作,代码如下:fileio.unlink(filePath,function(err){if(!err){prompt.showToast({message:"删除成功"});}});通过对比查看删除前后的日志文件,可以验证文件是否删除成功:3.7创建文件夹使用异步方式创建目录,并以回调的形式返回结果fileio.mkdir(path,function(err){if(!err){//创建文件夹成功}});通过同步方式创建目录fileio.mkdirSync(path);通过同步创建目录创建dir_test_测试文件夹,代码如下:for(leti=0;i<4;i++){fileio.mkdirSync(data+"/cache_files/dir_test_"+i);}通过日志我们可以验证文件夹创建成功3.8文件复制和移动操作异步复制文件并使用回调返回结果fileio.copyFile(src,dest,function(err){});同步复制文件fileio.copyFileSync(src,dest);src:复制文件路径或复制文件描述符,dest:目标文件路径或目标文件描述符,具体代码如下:fileio.copyFile(filePath,dest,function(err){if(!err){prompt.showToast({message:"复制成功"});}});通过查询目标路径/1524下的文件信息验证操作是否成功更多信息请访问:https://harmonyos.51cto.com,与华为官方共同打造的鸿蒙技术社区