HarmonyOS 鸿蒙Next 文件操作类场景demo 鸿蒙场景化代码
HarmonyOS 鸿蒙Next 文件操作类场景demo 鸿蒙场景化代码
文件操作场景demo
仓库地址
https://gitee.com/scenario-samples/HarmonyOSSamples/tree/master/File
基本介绍
本demo按照文件上传、文件下载、文件预览、文件读取保存、文件压缩解压、文件拷贝6个分类进行场景化子demo构造展示,如文件上传展示中,模拟简易聊天场景,此时发送文件是个正常诉求,基于此场景完成相关元能力实现及展示。
entry包仅提供页面展示,各文件操作分类对应的har包提供元能力的函数导出。读者无需关注页面样式相关,评估场景及对应har包能力是否需要即可。
代码结构
entry包下:
├─common
│ chatConstant.ets
│ compressConstant.ets
│ copyConstant.ets
│ downloadConstant.ets
│ entryConstant.ets
│ uploadConstant.ets
│
├─components ----------------- 一级界面用到的组件
│ CommonList.ets
│ CompressFileView.ets
│ DeCompressFileView.ets
│ PreviewByWebview.ets
│ UploadFileByRcp.ets
│ UploadFileByWeb.ets
│
├─model
│ FileItemModel.ets
│ FileListDataSource.ets
│ fileOperationModel.ets
│ simpleChat.model.ets
│
└─pages ----------------------- 一级界面
FileCompressPage.ets -- 文件压缩解压展示入口
FileCopyPage.ets -- 文件拷贝展示入口
FileDownloadPage.ets -- 文件下载展示入口
FilePreviewPage.ets -- 文件预览展示入口
FileReadWritePage.ets-- 文件读写展示入口
FileUploadPage.ets -- 文件上传展示入口
FileView.ets -- 自定义查看沙箱文件界面组件
HomePage.ets -- 主页列表
各文件操作能力使用说明
1.文件预览
1.1.场景介绍:
场景1:通过previewKit预览下载文件,其中预览能力来自file_preview的har包中viewFileByPreviewKit函数,下载能力来自file_download中的downLoadFileByRequest函数
场景2:通过webview组件预览本地rawfile文件以及网络地址,详情代码参考:PreviewByWebview.ets
1.2.效果预览: 参考README文件
2.文件下载
2.1.场景介绍:完成下载配置,包含下载源url,保存路径,保存文件名等,通过request.agent.create创建下载实例对象,该对象来控制下载任务的暂停重启,后台下载等,具体实现代码参考FileDownloadPage.ets
2.2.效果预览:参考README文件
3.文件读取与保存
3.1.场景介绍:模拟即时通讯软件聊天界面,发送图片或者表情包的场景,保存聊天记录的场景,相关元能力来自photoPickerGetUri,saveToUser函数,具体代码参考file_read_write的har包common目录下的utils文件夹。
3.2.效果预览:参考README文件
4.文件上传
4.1.前置准备:已有demo中关于文档上传的部分,上传的服务器地址都是模拟的,未将全流程跑通,本demo示例有简单实现一个node服务器处理,将根目录下uploadServer文件夹拷贝出其他目录,进入uploadServer,按照其中的readme文档将服务启动。需要提前demo目录下的uploadConstant中的ip地址填入本机ip:
4.2.场景介绍 4.2.1. 场景1:通过webview加载h5,模拟云盘上传文件进行缓存的场景,通过监听打开文件选择事件,拉起手机文件管理,通过h5自带form表单进行上传。如图所示: 4.2.2. 场景2:模拟复合表单提交
效果预览:参考README文件
5.文件解压、压缩
5.1.前置准备:由于生态代码仓会拦截zip文件,这里需要准备一个压缩文件,放入entry包下资源目录下的rawfile文件中,命名:decompress_file_test.zip 如图:参考README文件
5.2.实现说明: 5.2.1. 使用了内置库zlib的压缩、解压能力,详细代码参考:CompressFileView.ets、DeCompressFileView.ets 5.2.2. 解压时使用了worker开启子线程加速解压,详情代码参考:file_compress的har包下的worker.ets
效果预览:参考README文件
6.文件拷贝
6.1.场景说明:展示沙箱目录下rawfile文件列表,点击后拉起文件管理选择目录后进行拷贝,拷贝能力由file_copy har包中的copyRawFileToPub函数提供。
6.2.效果预览:参考README文件
参考资料
在HarmonyOS鸿蒙系统中,文件操作类场景通常涉及到对本地存储或外部存储的文件进行读写操作。以下是一个简单的场景化代码示例,用于演示如何在鸿蒙应用中进行文件操作:
// 引入必要的包
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.security.SystemPermission;
import ohos.utils.file.FileIoManager;
import ohos.utils.file.FileUtils;
// 在你的Ability中
public class FileOperationAbility extends Ability {
@Override
protected void onStart(Intent intent) {
super.onStart(intent);
// 请求读写存储权限
verifySelfPermission(SystemPermission.WRITE_EXTERNAL_STORAGE);
verifySelfPermission(SystemPermission.READ_EXTERNAL_STORAGE);
// 写入文件
String filePath = "/data/local/tmp/example.txt";
String content = "Hello, HarmonyOS!";
FileIoManager.writeFile(filePath, content.getBytes(), new FileIoManager.OnCompleteListener() {
@Override
public void onComplete(FileIoManager.ErrorCode errorCode) {
if (errorCode == FileIoManager.ErrorCode.SUCCESS) {
// 读取文件
FileIoManager.readFile(filePath, new FileIoManager.OnReadReadyListener() {
@Override
public void onReadReady(String result, FileIoManager.ErrorCode errorCode) {
// 处理读取结果
}
});
}
}
});
}
}
此代码展示了如何在鸿蒙应用中进行简单的文件读写操作。注意,实际应用中需处理权限请求结果及错误处理逻辑。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html