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<void> 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<void> 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