赞
踩
本示例介绍在Worker 子线程使用@ohos.zlib 提供的zlib.decompressfile接口对沙箱目录中的压缩文件进行解压操作,解压成功后将解压路径返回主线程,获取解压文件列表。
使用说明
const workerPort: ThreadWorkerGlobalScope = worker.workerPort;
"buildOption": {
"sourceOption": {
"workers": [
"./src/main/ets/workers/Worker.ets"
]
}
}
https://gitee.com/harmonyos-cases/cases/blob/master/CommonAppDevelopment/feature/decompressfile/build-profile.json5
workerInstance.postMessage({ pathDir: this.pathDir, rawfileZipName: rawfileZipName });
workerPort.onmessage = (e: MessageEvents): void => {
logger.info(TAG, `Worker onmessage:${JSON.stringify(e.data)}`);
let pathDir: string = e.data.pathDir; // 沙箱目录
let rawfileZipName: string = e.data.rawfileZipName; // 带.zip后缀的压缩文件名称
}
fs.access(outFileDir).then((res: boolean) => { if (!res) { // TODO:知识点:使用fs.mkdirSync创建目录,用于存放解压后的文件。 fs.mkdirSync(outFileDir); logger.info(TAG, 'mkdirSync succeed'); } // TODO:知识点:使用zlib.decompressfile接口对沙箱目录中的压缩文件进行解压操作,解压至指定沙箱目录outFileDir。 // 如果待解压的文件或文件夹在解压后的路径下已经存在,则会直接覆盖同名文件或同名文件夹中的同名文件。 zlib.decompressFile(`${pathDir}/${rawfileZipName}`, outFileDir, (errData: BusinessError) => { if (errData !== null) { logger.error(TAG, `decompressFile failed. code is ${errData.code}, message is ${errData.message}`); } else { logger.info(TAG, `decompressFile succeed. outFileDir is ${outFileDir}`); // TODO:知识点:Worker线程向主线程发送信息。 workerPort.postMessage(outFileDir); } }) }).catch((err: BusinessError) => { logger.error(TAG, `access failed with error message: ${err.message}, error code: ${err.code}`); });
decompressFile // har类型
|---/src/main/ets/model
| |---FileListDataSource.ets // 数据模型层-列表数据模型
| |---FileItemModel.ets // 数据模型层-列表项数据模型
|---/src/main/ets/view
| |---MainPage.ets // 视图层-场景列表页面
|---/src/main/ets/workers
| |---Worker.ets // Worker线程
为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05
https://qr21.cn/FV7h05
https://qr21.cn/FV7h05
https://qr21.cn/FV7h05
https://qr21.cn/FV7h05
https://qr21.cn/D2k9D5
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。