想了解更多内容,码解请访问:
和华为官方合作共建的文件鸿蒙技术社区
https://harmonyos.51cto.com
文件管理在手机、管理平板、码解智慧屏等设备上都是文件一个很重要的功能,通过文件管理相关 API 我们可以实现对指定文件的管理删除、复制、码解移动、文件压缩解压缩等操作。管理本篇文章通过一个小DEMO来演示该如何使用官方提供的码解API来实现对指定文件的相关操作。
注意:
API Version 6 开始支持。管理
目前只能对应用私有目录下的码解文件操作权限,想实现类似文件管理的文件应用还需等更高权限的源码库开放。
HarmonyOS js-apis-fileio( 文件管理)
OpenHarmony js-apis-fileio.md( 文件管理)
目前文件管理API支持在手机、平板、智慧屏上调用,暂不支持智能穿戴设备上调用。使用该功能模块对文件/目录进行操作前,需要先获取其绝对路径,获取方式及其接口用法请参考Ability上下文。
在使用AbilityContext的功能前,需要通过getContext()先获取Context对象。在使用AbilityContext的功能前,需要通过getContext()先获取Context对象。
示例
import ability_featureability from @ohos.ability.featureAbility var context = ability_featureability.getContext();目录类型如下图所示:
“文件/目录绝对路径”=“应用目录路径”+“文件/目录名”,通过上述接口获取到应用目录路径dir,文件名为“xxx.txt”,文件所在绝对路径为:
let path = dir + "xxx.txt";
示例
context.getFilesDir() .then((data) => { console.info(Cache directory obtained. Data: + data + "getFilesDir"); this.filePath = data; this.mDirPath = this.filePath + "/cache_files/"; this.findFile(); }).catch((error) => { console.error(Failed to obtain the cache directory. Cause: + error.message); })在对文件操作之前我们首先创建几个测试文件,通过以下代码就可以成功创建文件
示例
createTestFiles() { for (let i = 0;i < 4; i++) { file.writeText({ uri: internal://app//cache_files/ + "file-manager-test" + i + ".txt", text: Text that just for test. + i, success: function () { console.log(call writeText success.); }, fail: function (data, code) { console.error(call fail callback fail, code: + code + , data: + data); }, }); } }以异步方法获取文件信息,使用callback形式返回结果
fileio.stat(path, function (err, stat) { });以同步方法获取文件的亿华云信息
let stat = fileio.statSync(path);以异步方式为例,我们可以获取到文件的大小等信息,代码如下:
let path = that.mDirPath + any[i].uri.substring(index + 1); fileio.stat(path, function (err, stat) { console.info("Get file stat success:" + "fileSize:" + stat.size + "-------" + "fileName:" + any[i].uri.substring(index + 1)); });日志截图如下:
以异步方法删除文件,使用callback形式返回结果
fileio.unlink(path, function(err) { if (!err) { // 文件删除成功 } });以同步方法删除文件
fileio.unlinkSync(path);以异步方式为例,执行文件的删除操作,代码如下:
fileio.unlink(filePath, function (err) { if (!err) { prompt.showToast({ message: "删除成功" }); } });通过对比查看删除前后的日志文件可以验证文件删除成功:
以异步方法创建目录,使用callback形式返回结果
fileio.mkdir(path, function(err) { if (!err) { // 创建文件夹成功 } });以同步方法创建目录
fileio.mkdirSync(path);以同步创建目录方式,创建dir_test_ 测试文件夹,代码如下:
for (let i = 0;i < 4; i++) { fileio.mkdirSync(data + "/cache_files/dir_test_" + i); }通过日志我们可以验证文件夹创建成功
以异步方法复制文件,使用callback形式返回结果
fileio.copyFile(src, dest, function (err) { });以同步方法复制文件
fileio.copyFileSync(src, dest);src:待复制文件的路径或待复制文件的描述符,dest:目标文件路径或目标文件描述符,具体代码如下:
fileio.copyFile(filePath, dest, function (err) { if(!err){ prompt.showToast({ message: "复制成功" }); } });通过查询目标路径下面文件信息来验证操作是否成功
文章相关附件可以点击下面的原文链接前往下载
https://harmonyos.51cto.com/resource/1524
想了解更多内容,请访问:
和华为官方合作共建的鸿蒙技术社区
https://harmonyos.51cto.com