OpenHarmony Jtar组件介绍 原创
简介
Jtar库基于开源操作系统OpenHarmony,使用ETS和C++混合开发,是一个用于对tar打包和解包的鸿蒙组件库。
使用场景
1.针对鸿蒙手机上的***.txt等文件,进行压缩生成***.tar压缩文件;
2.针对鸿蒙手机上的***.tar压缩文件,进行解压生成***详细文件;
演示效果展示
开发环境
安装IDE:DevEco Studio 3.0 Beta3 (Build Version 3.0.0.900)
安装SDK:OpenHarmony API version 8 及以上版本
使用设备:OpenHarmony 3.1 Release版本
使用方法
-
npm install @ohos/jtar --save
-
在page页面引入包
import jtar from ‘libjtar.so’;
import {JTar} from “…/jtar.ets” -
创建tartest对象
let fileName: string = “tartest”;
let path: string = “tartestdir”;
let tartest: JTar = new JTar(fileName, path); -
初始化Tar或者Sys Tar测试环境,创建生成tartestdir目录,并且包含一些txt文件
JtarTestInit.TestTarInit();
-
Tar或者Sys Tar功能测试,运行后会将环境中的tartestdir目录打包为tartest.tar文件
tartest.tar();或者tartest.systar();
-
初始化Untar或者Sys Untar测试环境
JtarTestInit.TestUnTarInit();
-
Untar或者Sys Untar功能测试,运行后会将环境中的tartest.tar文件解包
tartest.untar();或者tartest.sysuntar();
以上功能测试均可通过在设备应用目录中查看
1. 进入到应用files目录中
# cd /data/app/el2/100/base/com.zh.jtar/haps/entry/files
2. 点击Tar Init,会生成tartestdir,tartestdir中包含三个txt文件
# ls
tartestdir
# ls tartestdir/
one.txt three.txt two.txt
3. 点击Tar或者Sys Tar,会打包生成对应的tartest.tar文件
# ls
tartest.tar tartestdir
4. 点击UnTar Init,生成对应的tartest.tar文件
# ls
tartest.tar
5. 点击UnTar或者Sys UnTar,生成对应的tartest.tar文件的原始文件
# ls
tartest.tar tartestdir
# ls tartestdir
one.txt three.txt two.txt
开发调试
1.1Demo源码以及文件结构
下载demo源码,源码文件结构如下:
|---- jtar
| |---- entry # 示例代码文件夹
| |---- jtar # jtar库文件夹
| |---- cpp # c++详细接口
| |---- ets
| |---- jtar.ets # 接口封装
| |---- index.ets # 对外接口
| |---- README.md # 安装使用方法
1.1类结构
1.2Tar文件结构体
1.3相关接口
该库包含一些用于基本功能的核心函数、一些扩展功能的实用函数以及一些不应从函数外部调用的内部函数。
1.4关键代码
打包和解包的详细逻辑封装在cpp中,通过cmake编译生成libjtar.so,ets代码引入libjtar.so,调用底层C代码,对外提供接口,供开发者使用,下面为大家展示两段关键代码。
1.4.1打包
// tar打包
public tar(): number {
if (this.tarPaths.length != 0) {
// 将所有需要tar的文件或目录传递下去
for (let index in this.tarPaths) {
jtar.addTarPath(this.tarPaths[index]);
}
// 调用底层C代码进行tar (传入最后tar生成的文件的绝对路径名)
let ret: number = jtar.sitar(this.rootPath + “/” + this.tarFileName);
return ret;
}
}
1.4.2解包
// untar解包
public untar(path?: string): number {
if (path == null || path == undefined || path == “”) {
return jtar.siuntar(this.rootPath + “/” + this.tarFileName);
}
return jtar.siuntar(this.rootPath + “/” + this.tarFileName, this.rootPath + this.untarPath);
}
结语
通过本片文章介绍,您对 OpenHarmony Jtar组件应该有了初步的了解。我们所有的源码和指导文档都已经开源,如果您对本篇文章以内容及所实现的 demo 感兴趣,可以根据本片文章介绍自行下载OpenHarmony Jtar源码进行研究和使用。同时也欢迎更多开发者与我们共享开发成果,分享技术解读与经验心得。