Skip to content

压缩与解压

仅支持 ZIP 格式,基于 zip4j 库实现。

压缩文件

js
// 压缩单个文件
var zip = $zip.zipFile("/sdcard/test.txt", "/sdcard/test.zip")

// 压缩目录
var zip = $zip.zipDir("/sdcard/myfolder", "/sdcard/archive.zip")

// 压缩多个文件
var zip = $zip.zipFiles(["/sdcard/a.txt", "/sdcard/b.txt"], "/sdcard/files.zip")

压缩并加密

js
// 使用密码压缩
var zip = $zip.zipDir("/sdcard/myfolder", "/sdcard/archive.zip", {
    password: "mypassword",
    encryptionMethod: "ENC_METHOD_AES",
    aesKeyStrength: "AES_STRENGTH_256"
})

解压文件

js
// 解压无密码的 zip 文件
$zip.unzip("/sdcard/archive.zip", "/sdcard/output")

// 解压有密码的 zip 文件
$zip.unzip("/sdcard/archive.zip", "/sdcard/output", {
    password: "mypassword"
})

Zip 对象操作

使用 $zip.open() 打开已有的 zip 文件进行操作:

js
// 打开 zip 文件
var zip = $zip.open("/sdcard/archive.zip")

// 添加文件
zip.addFile("/sdcard/newfile.txt")

// 添加多个文件
zip.addFiles(["/sdcard/a.txt", "/sdcard/b.txt"])

// 添加文件夹
zip.addFolder("/sdcard/myfolder")

// 解压所有文件
zip.extractAll("/sdcard/output")

// 解压单个文件
zip.extractFile("test.txt", "/sdcard/output")

// 解压单个文件并重命名
zip.extractFile("test.txt", "/sdcard/output", {}, "renamed.txt")

// 设置密码
zip.setPassword("mypassword")

// 检查是否加密
if (zip.isEncrypted()) {
    toastLog("文件已加密")
}

// 检查是否为有效的 zip 文件
if (zip.isValidZipFile()) {
    toastLog("有效的 zip 文件")
}

// 获取所有文件头
var headers = zip.getFileHeaders()
headers.forEach(h => {
    log(h.fileName)
})

// 移除文件
zip.removeFile("test.txt")

// 获取文件路径
var path = zip.getPath()

参数说明

参数类型说明
passwordString压缩/解压密码
compressionMethodString压缩方法:COMP_STORE(仅存储)、COMP_DEFLATE(默认)、COMP_AES_ENC
encryptionMethodString加密方法:ENC_METHOD_STANDARDENC_METHOD_AES
aesKeyStrengthStringAES 强度:AES_STRENGTH_128AES_STRENGTH_192AES_STRENGTH_256