
OpenHarmony 应用如何使用@ohos.worker多线程进行批量文件读写与复制 原创
作者:苟晶晶
简介:
支持批量文件读写、复制等操作,支持使用@ohos.worker进行多线程开发。创先线程可以使用@ohos.worker
文档环境:
-
开发环境:Windows 11 家庭版
-
DevEco Studio版本:DevEco Studio 4.0 Release(4.0.0.600)
-
SDK版本:4.0.10.13
-
开发板型号:DAYU200(RK3568)
-
系统版本:OpenHarmony 4.1.5.2
演示 demo:
-
新建一个 Stage 框架的 demo 工程,在entryability/EntryAbility.ets中通过 let filesDir = this.context.filesDir;AppStorage.SetOrCreate(‘sanBoxFileDir’, filesDir);存储沙箱files路径信息,然后在pages/CopyFile.ets中通过public baseDir: string | undefined = AppStorage.Get(‘sanBoxFileDir’);拿到应用的沙箱files路径信息,通过文件操作接口在files下创建文件夹workerDir并创建以txt为后缀的文件。
-
通过接口fs.listFileSync(filesPathDir)获取workerDir文件夹下的所有文件并显示在list中。
-
用户点击多选框选择需要批量拷贝的文件,通过new worker.ThreadWorker(‘entry/ets/workers/WorkerCopy.ets’)创建worker线程并将拷贝文件的信息发送至worker线程,在该线程中通过fs.copyFileSync(srcPath, destPath)实现文件拷贝操作,文件拷贝成功之后向主线程发送拷贝成功消息:workerPort.postMessage({count: count,strFlag: true,listFileNames: listFileNames});
核心代码如下:
在沙箱路径下创建待拷贝的文件:
创建worker线程并发送拷贝的文件信息:
worker线程实现拷贝:
