• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.zlib (Zip模块)
2
3本模块提供压缩解压缩文件的能力
4
5> **说明:**
6>
7> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```javascript
12import zlib from '@ohos.zlib';
13```
14
15## zlib.zipFile<sup>(deprecated)</sup>
16zipFile(inFile: string, outFile: string, options: Options): Promise&lt;void&gt;
17
18压缩接口(Promise形式)。
19
20> 从api9开始不再维护,建议使用[zlib.compressFile](#zlibcompressfile9)
21
22**系统能力:** SystemCapability.BundleManager.Zlib
23
24**参数:**
25
26| 参数名  | 类型                | 必填 | 说明                                                         |
27| ------- | ------------------- | ---- | ------------------------------------------------------------ |
28| inFile  | string              | 是   | 指定压缩的文件夹路径或者文件路径,对应的路径参考[FA模型](js-apis-inner-app-context.md),[Stage模型](js-apis-inner-application-context.md)。 |
29| outFile | string              | 是   | 指定压缩结果的文件路径(文件的扩展名zip)。                  |
30| options | [Options](#options) | 是   | 压缩的可选参数。                                             |
31
32**返回值:**
33
34| 类型           | 说明                                                         |
35| -------------- | ------------------------------------------------------------ |
36| Promise\<void> | [ERROR_CODE_OK](#ziperrorcode):压缩成功;<br />[ERROR_CODE_ERRNO](#ziperrorcode):压缩失败。 |
37
38**示例1:**
39
40```typescript
41//【压缩文件 例子1】
42import zlib from '@ohos.zlib';
43let inFile = '/xxx/filename.xxx';
44let outFile = '/xxx/xxx.zip';
45let options = {
46  level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
47  memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
48  strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
49};
50
51zlib.zipFile(inFile, outFile, options).then((data) => {
52    console.log('zipFile result is ' + JSON.stringify(data));
53}).catch((err) => {
54    console.log('error is ' + JSON.stringify(err));
55});
56```
57
58**示例2:**
59
60```typescript
61// 【压缩文件夹 例子2】
62import zlib from '@ohos.zlib';
63let inFile = '/xxx/xxx';
64let outFile = '/xxx/xxx.zip';
65let options = {
66  level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
67  memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
68  strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
69};
70
71zlib.zipFile(inFile , outFile, options).then((data) => {
72    console.log('zipFile result is ' + JSON.stringify(data));
73}).catch((err)=>{
74    console.log('error is ' + JSON.stringify(err));
75});
76```
77
78## zlib.unzipFile<sup>(deprecated)</sup>
79
80unzipFile(inFile:string, outFile:string, options: Options): Promise&lt;void&gt;
81
82解压文件,解压完成返回执行结果(Promise形式)。
83
84> 从api9开始不再看护,建议使用[zlib.decompressFile](#zlibdecompressfile9)
85
86**系统能力:** SystemCapability.BundleManager.Zlib
87
88**参数:**
89
90| 参数名  | 类型                | 必填 | 说明                                                         |
91| ------- | ------------------- | ---- | ------------------------------------------------------------ |
92| inFile  | string              | 是   | 指定待解压的文件夹路径或者文件路径,对应的路径参考[FA模型](js-apis-inner-app-context.md),[stage模型](js-apis-inner-application-context.md)。 |
93| outFile | string              | 是   | 指定的解压文件路径。                                         |
94| options | [Options](#options) | 是   | 解压的可选参数。                                             |
95
96**返回值:**
97
98| 类型           | 说明                                                         |
99| -------------- | ------------------------------------------------------------ |
100| Promise\<void> | [ERROR_CODE_OK](#ziperrorcode):解压成功;<br />[ERROR_CODE_ERRNO](#ziperrorcode):解压失败返回执行结果。 |
101
102**示例:**
103
104```typescript
105// 【解压缩 例子1】
106import zlib from '@ohos.zlib';
107let inFile = '/xx/xxx.zip';
108let outFile = '/xxx';
109
110let options = {
111  level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
112  memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
113  strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
114};
115zlib.unzipFile(inFile, outFile, options).then((data) => {
116    console.log('unzipFile result is ' + JSON.stringify(data));
117}).catch((err)=>{
118    console.log('error is ' + JSON.stringify(err));
119})
120```
121
122## zlib.compressFile<sup>9+</sup>
123
124compressFile(inFile: string, outFile: string, options: Options, callback: AsyncCallback\<void>): void;
125
126压缩文件,压缩的结果通过callback返回。成功时返回null,失败时返回错误码ID。
127
128**系统能力:** SystemCapability.BundleManager.Zlib
129
130**参数:**
131
132| 参数名                  | 类型                | 必填 | 说明                                                         |
133| ----------------------- | ------------------- | ---- | ------------------------------------------------------------ |
134| inFile                  | string              | 是   | 指定压缩的文件夹路径或者文件路径,对应的路径参考[FA模型](js-apis-inner-app-context.md),[stage模型](js-apis-inner-application-context.md)。 |
135| outFile                 | string              | 是   | 指定压缩结果的文件路径。                                           |
136| options                 | [Options](#options) | 是   | 压缩的配置参数。                                               |
137| AsyncCallback<**void**> | callback            | 否   | 压缩时的回调函数。                                             |
138
139**相关错误码**
140
141以下错误码的详细介绍请参见[ohos.zlib错误码](../errorcodes/errorcode-zlib.md)。
142| 错误码ID | 错误信息                               |
143| -------- | --------------------------------------|
144| 900001   | The Input source file is invalid.      |
145| 900002   | The Input destination file is invalid. |
146
147**示例**
148
149```typescript
150// 【压缩文件 例子1】
151// 代码中使用的路径需为应用的沙箱路径,如/data/storage/el2/base/haps,也可以通过context获取
152import zlib from '@ohos.zlib';
153let inFile = '/xxx/filename.xxx';
154let outFile = '/xxx/xxx.zip';
155let options = {
156  level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
157  memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
158  strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
159};
160
161try {
162    zlib.compressFile(inFile, outFile, options, (errData) => {
163        if (errData !== null) {
164            console.log(`errData is errCode:${errData.code}  message:${errData.message}`);
165        }
166    })
167} catch(errData) {
168    console.log(`errData is errCode:${errData.code}  message:${errData.message}`);
169}
170```
171
172## zlib.compressFile<sup>9+</sup>
173
174compressFile(inFile: string, outFile: string, options: Options): Promise\<void>;
175
176压缩文件,压缩的结果通过promise返回,成功时返回null,失败时返回错误码。
177
178**系统能力:** SystemCapability.BundleManager.Zlib
179
180**参数:**
181
182| 参数名  | 类型                | 必填 | 说明                                                         |
183| ------- | ------------------- | ---- | ------------------------------------------------------------ |
184| inFile  | string              | 是   | 指定压缩的文件夹路径或者文件路径,对应的路径参考[FA模型](js-apis-inner-app-context.md),[stage模型](js-apis-inner-application-context.md)。 |
185| outFile | string              | 是   | 指定压缩结果的文件路径。                                           |
186| options | [Options](#options) | 是   | 压缩的配置参数。                                               |
187
188**相关错误码**
189
190以下错误码的详细介绍请参见[ohos.zlib错误码](../errorcodes/errorcode-zlib.md)。
191
192| 错误码ID | 错误信息                               |
193| -------- | ------------------------------------- |
194| 900001   | The Input source file is invalid.      |
195| 900002   | The Input destination file is invalid. |
196
197```typescript
198// 【压缩文件 例子2】
199// 代码中使用的路径需为应用的沙箱路径,如/data/storage/el2/base/haps,也可以通过context获取
200import zlib from '@ohos.zlib';
201let inFile = '/xxx/filename.xxx';
202let outFile = '/xxx/xxx.zip';
203let options = {
204  level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
205  memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
206  strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
207};
208
209try {
210    zlib.compressFile(inFile, outFile, options).then((data) => {
211        console.info('compressFile success');
212    }).catch((errData) => {
213        console.log(`errData is errCode:${errData.code}  message:${errData.message}`);
214    })
215} catch(errData) {
216    console.log(`errData is errCode:${errData.code}  message:${errData.message}`);
217}
218```
219
220
221
222## zlib.decompressFile<sup>9+</sup>
223
224decompressFile(inFile: string, outFile: string, options: Options, callback: AsyncCallback\<void>): void;
225
226解压文件,解压的结果通过callback返回,成功时返回null,失败时返回错误码。
227
228**系统能力:** SystemCapability.BundleManager.Zlib
229
230**参数:**
231
232| 参数名                  | 类型                | 必填 | 说明                                                         |
233| ----------------------- | ------------------- | ---- | ------------------------------------------------------------ |
234| inFile                  | string              | 是   | 指定的待解压缩文件的文件路径,对应的路径参考[FA模型](js-apis-inner-app-context.md),[stage模型](js-apis-inner-application-context.md)。 |
235| outFile                 | string              | 是   | 指定的解压后的文件夹路径,文件夹目录路径需要在系统中存在,不存在则会解压失败。路径必须为沙箱路径,沙箱路径可以通过context获取,具体方法可参考[application/context(Stage模型)](js-apis-inner-application-context.md)或 [app/context(FA模型)](js-apis-inner-app-context.md)。 |
236| options                 | [Options](#options) | 是   | 解压的配置参数。                                             |
237| AsyncCallback<**void**> | callback            | 否   | 解压的回调函数。                                             |
238
239**相关错误码**
240
241以下错误码的详细介绍请参见[ohos.zlib错误码](../errorcodes/errorcode-zlib.md)。
242
243| 错误码ID | 错误信息
244| -------- | --------------------------------------|
245| 900001   | The Input source file is invalid.      |
246| 900002   | The Input destination file is invalid. |
247
248**示例**
249
250```typescript
251// 【解压缩 例子1】
252// 代码中使用的路径需为应用的沙箱路径,如/data/storage/el2/base/haps,也可以通过context获取
253import zlib from '@ohos.zlib';
254let inFile = '/xx/xxx.zip';
255let outFile = '/xxx';
256let options = {
257  level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
258  memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
259  strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
260};
261
262try {
263    zlib.decompressFile(inFile, outFile, options, (errData) => {
264        if (errData !== null) {
265            console.log(`errData is errCode:${errData.code}  message:${errData.message}`);
266        }
267    })
268} catch(errData) {
269    console.log(`errData is errCode:${errData.code}  message:${errData.message}`);
270}
271```
272
273## zlib.decompressFile<sup>9+</sup>
274
275decompressFile(inFile: string, outFile: string, options: Options): Promise\<void>;
276
277解压文件,解压的结果通过promise返回,成功时返回null,失败时返回错误码。
278
279**系统能力:** SystemCapability.BundleManager.Zlib
280
281**参数:**
282
283| 参数名  | 类型                | 必填 | 说明                                                         |
284| ------- | ------------------- | ---- | ------------------------------------------------------------ |
285| inFile  | string              | 是   | 指定的待解压缩文件的文件路径,对应的路径参考[FA模型](js-apis-inner-app-context.md),[stage模型](js-apis-inner-application-context.md)。 |
286| outFile | string              | 是   | 指定的解压后的文件夹路径,文件夹目录路径需要在系统中存在,不存在则会解压失败。路径必须为沙箱路径,沙箱路径可以通过context获取,具体方法可参考[application/context(Stage模型)](js-apis-inner-application-context.md)或 [app/context(FA模型)](js-apis-inner-app-context.md)。 |
287| options | [Options](#options) | 是   | 解压时的配置参数。                                           |
288
289**相关错误码**
290
291以下错误码的详细介绍请参见[ohos.zlib错误码](../errorcodes/errorcode-zlib.md)。
292
293| 错误码ID | 错误信息                               |
294| ------ | ------------------------------------- |
295| 900001 | The Input source file is invalid.      |
296| 900002 | The Input destination file is invalid. |
297
298```typescript
299// 【解压缩 例子2】
300// 代码中使用的路径需为应用的沙箱路径,如/data/storage/el2/base/haps,也可以通过context获取
301import zlib from '@ohos.zlib';
302let inFile = '/xx/xxx.zip';
303let outFile = '/xxx';
304let options = {
305  level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
306  memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
307  strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
308};
309
310try {
311    zlib.decompressFile(inFile, outFile, options).then((data) => {
312        console.info('decompressFile success');
313    }).catch((errData) => {
314        console.log(`errData is errCode:${errData.code}  message:${errData.message}`);
315    })
316} catch(errData) {
317    console.log(`errData is errCode:${errData.code}  message:${errData.message}`);
318}
319```
320
321## Options
322
323**系统能力:** SystemCapability.BundleManager.Zlib
324
325| 名称     | 类型             | 可读 | 可写 | 说明                                                       |
326| -------- | ---------------- | ---- | ---- | ---------------------------------------------------------- |
327| level    | CompressLevel     | 是   | 否   | 参考[zip.CompressLevel枚举定义](#zipcompresslevel)。       |
328| memLevel | MemLevel         | 是   | 否   | 参考[zip.MemLevel枚举定义](#zipmemlevel)。                 |
329| strategy | CompressStrategy | 是   | 否   | 参考[zip.CompressStrategy枚举定义](#zipcompressstrategy)。 |
330
331## zip.CompressLevel
332
333**系统能力:** SystemCapability.BundleManager.Zlib
334
335| 名称                               | 值   | 说明              |
336| ---------------------------------- | ---- | ----------------- |
337| COMPRESS_LEVEL_NO_COMPRESSION      | 0    | 压缩率为0压缩等级。 |
338| COMPRESS_LEVEL_BEST_SPEED          | 1    | 最佳速度压缩等级。  |
339| COMPRESS_LEVEL_BEST_COMPRESSION    | 9    | 最佳压缩等级。      |
340| COMPRESS_LEVEL_DEFAULT_COMPRESSION | -1   | 默认压缩等级。      |
341
342## zip.MemLevel
343
344**系统能力:** SystemCapability.BundleManager.Zlib
345
346| 名称              | 值   | 说明                             |
347| ----------------- | ---- | -------------------------------- |
348| MEM_LEVEL_MIN     | 1    | zip 接口在压缩过程中最小使用内存。 |
349| MEM_LEVEL_MAX     | 9    | zip 接口在压缩过程中最大使用内存。 |
350| MEM_LEVEL_DEFAULT | 8    | zip 接口在压缩过程中默认使用内存。 |
351
352## zip.CompressStrategy
353
354**系统能力:** SystemCapability.BundleManager.Zlib
355
356| 名称                               | 值   | 说明                     |
357| ---------------------------------- | ---- | ------------------------ |
358| COMPRESS_STRATEGY_DEFAULT_STRATEGY | 0    | 常规数据策略。             |
359| COMPRESS_STRATEGY_FILTERED         | 1    | 过滤器产生的数据压缩策略。 |
360| COMPRESS_STRATEGY_HUFFMAN_ONLY     | 2    | 霍夫曼编码格式压缩策略。   |
361| COMPRESS_STRATEGY_RLE              | 3    | 游标编码压缩策略。         |
362| COMPRESS_STRATEGY_FIXED            | 4    | 固定的压缩策略。           |
363
364## zip.ErrorCode
365
366**系统能力:** SystemCapability.BundleManager.Zlib
367
368| 名称             | 值   | 说明         |
369| ---------------- | ---- | ------------ |
370| ERROR_CODE_OK    | 0    | 函数调用成功。 |
371| ERROR_CODE_ERRNO | -1   | 函数调用失败。 |
372