js-apis-zlib.md 15.4 KB
Newer Older
H
hanhaibin 已提交
1 2
# Zip模块(JS端SDK接口)

L
longwei 已提交
3 4
本模块提供压缩解压缩文件的能力

5 6
> **说明:** 
>
J
junyi233 已提交
7 8
> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

H
hanhaibin 已提交
9
## 导入模块
W
wanghang 已提交
10 11 12 13 14

```javascript
import zlib from '@ohos.zlib';
```

L
longwei 已提交
15
## zlib.zipFile<sup>(deprecated)</sup>
L
longwei 已提交
16
zipFile(inFile: string, outFile: string, options: Options): Promise&lt;void&gt;
J
junyi233 已提交
17

H
hanhaibin 已提交
18 19
压缩接口(Promise形式)。

L
longwei 已提交
20 21
> 从api9开始不再维护,建议使用[zlib.compressFile](#zlibcompressfile9)

H
hanhaibin 已提交
22 23 24 25
**系统能力:** SystemCapability.BundleManager.Zlib

**参数:**

J
junyi233 已提交
26
| 参数名  | 类型                | 必填 | 说明                                                         |
J
junyi233 已提交
27
| ------- | ------------------- | ---- | ------------------------------------------------------------ |
28
| inFile  | string              | 是   | 指定压缩的文件夹路径或者文件路径,对应的路径参考[FA模型](js-apis-Context.md)[Stage模型](js-apis-application-context.md) |
L
longwei 已提交
29
| outFile | string              | 是   | 指定压缩结果的文件路径(文件的扩展名zip)                    |
J
junyi233 已提交
30
| options | [Options](#options) | 否   | 压缩的可选参数                                               |
H
hanhaibin 已提交
31 32 33

**返回值:**

34 35 36
| 类型           | 说明                                                         |
| -------------- | ------------------------------------------------------------ |
| Promise\<void> | [ERROR_CODE_OK](#ziperrorcode):压缩成功;<br />[ERROR_CODE_ERRNO](#ziperrorcode):压缩失败。 |
H
hanhaibin 已提交
37 38 39

**示例1:**

L
longwei 已提交
40
```typescript
H
hanhaibin 已提交
41
//【压缩文件 例子1】 
L
longwei 已提交
42 43 44 45
import zlib from '@ohos.zlib';
let inFile = '/xxx/filename.xxx';
let outFile = '/xxx/xxx.zip';
let options = {
46 47 48 49
  level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
  memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
  strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
};
H
hanhaibin 已提交
50 51

zlib.zipFile(inFile, outFile, options).then((data) => {
L
longwei 已提交
52 53 54
    console.log('zipFile result is ' + JSON.Stringify(data));
}).catch((err) => {
    console.log('error is ' + JSON.Stringify(err));
H
hanhaibin 已提交
55 56 57 58 59
});
```

**示例2:**

L
longwei 已提交
60
```typescript
H
hanhaibin 已提交
61
// 【压缩文件夹 例子2】
L
longwei 已提交
62 63 64 65
import zlib from '@ohos.zlib';
let inFile = '/xxx/xxx';
let outFile = '/xxx/xxx.zip';
let options = {
66 67 68 69
  level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
  memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
  strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
};
H
hanhaibin 已提交
70

71
zlib.zipFile(inFile , outFile, options).then((data) => {
L
longwei 已提交
72
    console.log('zipFile result is ' + JSON.Stringify(data));
H
hanhaibin 已提交
73
}).catch((err)=>{
L
longwei 已提交
74
    console.log('error is ' + JSON.Stringify(err));
H
hanhaibin 已提交
75 76 77
});
```

L
longwei 已提交
78
## zlib.unzipFile<sup>(deprecated)</sup>
H
hanhaibin 已提交
79

J
junyi233 已提交
80
unzipFile(inFile:string, outFile:string, options: Options): Promise&lt;void&gt;
H
hanhaibin 已提交
81 82 83

解压文件,解压完成返回执行结果(Promise形式)。

L
longwei 已提交
84 85
> 从api9开始不再看护,建议使用[zlib.decompressFile](#zlibdecompressfile9)

H
hanhaibin 已提交
86 87 88 89
**系统能力:** SystemCapability.BundleManager.Zlib

**参数:**

J
junyi233 已提交
90
| 参数名  | 类型                | 必填 | 说明                                                         |
J
junyi233 已提交
91 92 93 94
| ------- | ------------------- | ---- | ------------------------------------------------------------ |
| inFile  | string              | 是   | 指定压缩的文件夹路径或者文件路径,对应的路径参考[FA模型](js-apis-Context.md)[stage模型](js-apis-application-context.md) |
| outFile | string              | 是   | 指定的解压文件路径                                           |
| options | [Options](#options) | 否   | 解压的可选参数                                               |
H
hanhaibin 已提交
95 96 97 98 99

**返回值:**

| 类型           | 说明                                                         |
| -------------- | ------------------------------------------------------------ |
100
| Promise\<void> | [ERROR_CODE_OK](#ziperrorcode):解压成功;<br />[ERROR_CODE_ERRNO](#ziperrorcode):解压失败返回执行结果。 |
H
hanhaibin 已提交
101 102 103

**示例:**

L
longwei 已提交
104 105 106 107 108
```typescript
// 【解压缩 例子1】 
import zlib from '@ohos.zlib';
let inFile = '/xx/xxx.zip';
let outFile = '/xxx';
H
hanhaibin 已提交
109

110 111 112 113 114
let options = {
  level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
  memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
  strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
};
H
hanhaibin 已提交
115
zlib.unzipFile(inFile, outFile, options).then((data) => {
L
longwei 已提交
116
    console.log('unzipFile result is ' + JSON.Stringify(data));
H
hanhaibin 已提交
117
}).catch((err)=>{
L
longwei 已提交
118
    console.log('error is ' + JSON.Stringify(err));
H
hanhaibin 已提交
119 120 121
})
```

L
longwei 已提交
122 123
## zlib.compressFile<sup>9+</sup>

L
longwei 已提交
124
compressFile(inFile: string, outFile: string, options: Options, callback: AsyncCallback\<void>): void;
L
longwei 已提交
125

J
junyi233 已提交
126
压缩文件,压缩的结果通过callback返回。成功时返回null,失败时返回错误码ID。
L
longwei 已提交
127 128 129 130 131

**系统能力:** SystemCapability.BundleManager.Zlib

**参数:**

J
junyi233 已提交
132
| 参数名                  | 类型                | 必填 | 说明                                                         |
L
longwei 已提交
133 134 135 136 137 138 139 140
| ----------------------- | ------------------- | ---- | ------------------------------------------------------------ |
| inFile                  | string              | 是   | 指定压缩的文件夹路径或者文件路径,对应的路径参考[FA模型](js-apis-Context.md)[stage模型](js-apis-application-context.md) |
| outFile                 | string              | 是   | 指定的解压文件路径                                           |
| options                 | [Options](#options) | 是   | 压缩的配置参数                                               |
| AsyncCallback<**void**> | callback            | 否   | 压缩时的回调函数                                             |

**相关错误码**

J
junyi233 已提交
141 142 143 144 145
| 错误码ID | 错误信息                               |
| -------- | -------------------------------------- |
| 401      | wrong param type                       |
| 900001   | The Input source file is invalid.      |
| 900002   | The Input destination file is invalid. |
L
longwei 已提交
146 147 148

**示例**

L
longwei 已提交
149 150
```typescript
// 【压缩文件 例子1】
L
longwei 已提交
151
// 代码中使用的路径需为应用的沙箱路径,如/data/storage/el2/base/haps,也可以通过context获取
L
longwei 已提交
152 153 154 155
import zlib from '@ohos.zlib';
let inFile = '/xxx/filename.xxx';
let outFile = '/xxx/xxx.zip';
let options = {
L
longwei 已提交
156 157 158 159 160 161 162
  level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
  memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
  strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
};

try {
    zlib.compressFile(inFile, outFile, options, (errData) => {
163
        if (errData !== null) {
L
longwei 已提交
164
            console.log(`errData is errCode:${errData.errCode}  message:${errData.message}`);
L
longwei 已提交
165 166
        }
    })
L
longwei 已提交
167 168 169
} catch(errData) {
    console.log(`errData is errCode:${errData.errCode}  message:${errData.message}`);
}
L
longwei 已提交
170 171
```

L
longwei 已提交
172
compressFile(inFile: string, outFile: string, options: Options): Promise\<void>;
L
longwei 已提交
173 174 175 176 177 178 179

压缩文件,压缩的结果通过promise返回,成功时返回null,失败时返回错误码。

**系统能力:** SystemCapability.BundleManager.Zlib

**参数:**

J
junyi233 已提交
180
| 参数名  | 类型                | 必填 | 说明                                                         |
L
longwei 已提交
181 182 183 184
| ------- | ------------------- | ---- | ------------------------------------------------------------ |
| inFile  | string              | 是   | 指定压缩的文件夹路径或者文件路径,对应的路径参考[FA模型](js-apis-Context.md)[stage模型](js-apis-application-context.md) |
| outFile | string              | 是   | 指定的解压文件路径                                           |
| options | [Options](#options) | 是   | 压缩的配置参数                                               |
L
longwei 已提交
185 186 187

**相关错误码**

J
junyi233 已提交
188 189 190 191 192
| 错误码ID | 错误信息                               |
| -------- | -------------------------------------- |
| 401      | wrong param type                       |
| 900001   | The Input source file is invalid.      |
| 900002   | The Input destination file is invalid. |
L
longwei 已提交
193

L
longwei 已提交
194 195
```typescript
// 【压缩文件 例子2】
L
longwei 已提交
196
// 代码中使用的路径需为应用的沙箱路径,如/data/storage/el2/base/haps,也可以通过context获取
L
longwei 已提交
197 198 199 200
import zlib from '@ohos.zlib';
let inFile = '/xxx/filename.xxx';
let outFile = '/xxx/xxx.zip';
let options = {
L
longwei 已提交
201 202 203 204 205 206
  level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
  memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
  strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
};

try {
L
longwei 已提交
207 208 209 210
    zlib.compressFile(inFile, outFile, options).then((data) => {
        console.info('compressFile success');
    }).catch((errData) => {
        console.log(`errData is errCode:${errData.errCode}  message:${errData.message}`);
L
longwei 已提交
211
    })
L
longwei 已提交
212 213 214
} catch(errData) {
    console.log(`errData is errCode:${errData.errCode}  message:${errData.message}`);
}
L
longwei 已提交
215 216 217 218 219 220
```



## zlib.decompressFile<sup>9+</sup>

L
longwei 已提交
221
decompressFile(inFile: string, outFile: string, options: Options, callback: AsyncCallback\<void>): void;
L
longwei 已提交
222 223 224

解压文件,解压的结果通过callback返回,成功时返回null,失败时返回错误码。

L
longwei 已提交
225 226
**系统能力:** SystemCapability.BundleManager.Zlib

L
longwei 已提交
227 228
**参数:**

J
junyi233 已提交
229
| 参数名                  | 类型                | 必填 | 说明                                                         |
L
longwei 已提交
230 231 232 233 234 235 236 237
| ----------------------- | ------------------- | ---- | ------------------------------------------------------------ |
| inFile                  | string              | 是   | 指定的待解压缩文件的文件路径,对应的路径参考[FA模型](js-apis-Context.md)[stage模型](js-apis-application-context.md) |
| outFile                 | string              | 是   | 指定的解压后的目录路径                                       |
| options                 | [Options](#options) | 是   | 解压的配置参数                                               |
| AsyncCallback<**void**> | callback            | 否   | 解压是的回调函数                                             |

**相关错误码**

J
junyi233 已提交
238 239 240 241 242
| 错误码ID | 错误信息                               |
| -------- | -------------------------------------- |
| 401      | wrong param type                       |
| 900001   | The Input source file is invalid.      |
| 900002   | The Input destination file is invalid. |
L
longwei 已提交
243 244 245

**示例**

L
longwei 已提交
246 247
```typescript
// 【解压缩 例子1】
L
longwei 已提交
248
// 代码中使用的路径需为应用的沙箱路径,如/data/storage/el2/base/haps,也可以通过context获取
L
longwei 已提交
249 250 251 252
import zlib from '@ohos.zlib';
let inFile = '/xx/xxx.zip';
let outFile = '/xxx';
let options = {
L
longwei 已提交
253 254 255 256
  level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
  memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
  strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
};
L
longwei 已提交
257

L
longwei 已提交
258 259
try {
    zlib.decompressFile(inFile, outFile, options, (errData) => {
260
        if (errData !== null) {
L
longwei 已提交
261
            console.log(`errData is errCode:${errData.errCode}  message:${errData.message}`);
L
longwei 已提交
262 263
        }
    })
L
longwei 已提交
264 265 266
} catch(errData) {
    console.log(`errData is errCode:${errData.errCode}  message:${errData.message}`);
}
L
longwei 已提交
267 268
```

L
longwei 已提交
269
decompressFile(inFile: string, outFile: string, options: Options): Promise\<void>;
L
longwei 已提交
270 271 272

解压文件,解压的结果通过promise返回,成功时返回null,失败时返回错误码。

L
longwei 已提交
273 274
**系统能力:** SystemCapability.BundleManager.Zlib

L
longwei 已提交
275 276
**参数:**

J
junyi233 已提交
277
| 参数名  | 类型                | 必填 | 说明                                                         |
L
longwei 已提交
278 279 280 281 282 283 284 285 286 287 288 289 290
| ------- | ------------------- | ---- | ------------------------------------------------------------ |
| inFile  | string              | 是   | 指定的待解压缩文件的文件路径,对应的路径参考[FA模型](js-apis-Context.md)[stage模型](js-apis-application-context.md) |
| outFile | string              | 是   | 指定的解压后的目录路径                                       |
| options | [Options](#options) | 是   | 解压时的配置参数                                             |

**相关错误码**

| 错误码 | 错误信息                               |
| ------ | -------------------------------------- |
| 401    | wrong param type                       |
| 900001 | The Input source file is invalid.      |
| 900002 | The Input destination file is invalid. |

L
longwei 已提交
291 292
```typescript
// 【解压缩 例子2】
L
longwei 已提交
293
// 代码中使用的路径需为应用的沙箱路径,如/data/storage/el2/base/haps,也可以通过context获取
L
longwei 已提交
294 295 296 297
import zlib from '@ohos.zlib';
let inFile = '/xx/xxx.zip';
let outFile = '/xxx';
let options = {
L
longwei 已提交
298 299 300 301
  level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
  memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
  strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
};
L
longwei 已提交
302

L
longwei 已提交
303
try {
304 305
    zlib.decompressFile(inFile, outFile, options).then((data) => {
        console.info('decompressFile success');
L
longwei 已提交
306 307
    }).catch((errData) => {
        console.log(`errData is errCode:${errData.errCode}  message:${errData.message}`);
L
longwei 已提交
308
    })
L
longwei 已提交
309 310 311
} catch(errData) {
    console.log(`errData is errCode:${errData.errCode}  message:${errData.message}`);
}
L
longwei 已提交
312 313
```

J
junyi233 已提交
314
## Options
H
hanhaibin 已提交
315

J
junyi233 已提交
316 317
**系统能力:** SystemCapability.BundleManager.Zlib

J
junyi233 已提交
318 319
| 参数名   | 类型             | 必填 | 说明                                                      |
| -------- | ---------------- | ---- | --------------------------------------------------------- |
320 321 322
| level    | CompressLeve     | 否   | 参考[zip.CompressLevel枚举定义](#zipcompresslevel)       |
| memLevel | MemLevel         | 否   | 参考[zip.MemLevel枚举定义](#zipmemlevel)                 |
| strategy | CompressStrategy | 否   | 参考[zip.CompressStrategy枚举定义](#zipcompressstrategy) |
H
hanhaibin 已提交
323

J
junyi233 已提交
324
## zip.CompressLevel
H
hanhaibin 已提交
325

J
junyi233 已提交
326 327
**系统能力:** SystemCapability.BundleManager.Zlib

J
junyi233 已提交
328 329 330 331 332 333
| 名称                               | 值   | 说明              |
| ---------------------------------- | ---- | ----------------- |
| COMPRESS_LEVEL_NO_COMPRESSION      | 0    | 压缩率为0压缩等级 |
| COMPRESS_LEVEL_BEST_SPEED          | 1    | 最佳速度压缩等级  |
| COMPRESS_LEVEL_BEST_COMPRESSION    | 9    | 最佳压缩等级      |
| COMPRESS_LEVEL_DEFAULT_COMPRESSION | -1   | 默认压缩等级      |
H
hanhaibin 已提交
334

L
longwei 已提交
335 336 337 338 339 340 341 342 343 344
## zip.MemLevel

**系统能力:** SystemCapability.BundleManager.Zlib

| 名称              | 值   | 说明                             |
| ----------------- | ---- | -------------------------------- |
| MEM_LEVEL_MIN     | 1    | zip 接口在压缩过程中最小使用内存 |
| MEM_LEVEL_MAX     | 9    | zip 接口在压缩过程中最大使用内存 |
| MEM_LEVEL_DEFAULT | 8    | zip 接口在压缩过程中默认使用内存 |

J
junyi233 已提交
345
## zip.CompressStrategy
H
hanhaibin 已提交
346

J
junyi233 已提交
347 348
**系统能力:** SystemCapability.BundleManager.Zlib

J
junyi233 已提交
349 350 351 352 353 354 355
| 名称                               | 值   | 说明                     |
| ---------------------------------- | ---- | ------------------------ |
| COMPRESS_STRATEGY_DEFAULT_STRATEGY | 0    | 常规数据策略             |
| COMPRESS_STRATEGY_FILTERED         | 1    | 过滤器产生的数据压缩策略 |
| COMPRESS_STRATEGY_HUFFMAN_ONLY     | 2    | 霍夫曼编码格式压缩策略   |
| COMPRESS_STRATEGY_RLE              | 3    | 游标编码压缩策略         |
| COMPRESS_STRATEGY_FIXED            | 4    | 固定的压缩策略           |
H
hanhaibin 已提交
356

J
junyi233 已提交
357
## zip.ErrorCode
H
hanhaibin 已提交
358

J
junyi233 已提交
359 360
**系统能力:** SystemCapability.BundleManager.Zlib

J
junyi233 已提交
361 362 363 364
| 名称             | 值   | 说明         |
| ---------------- | ---- | ------------ |
| ERROR_CODE_OK    | 0    | 函数调用成功 |
| ERROR_CODE_ERRNO | -1   | 函数调用失败 |