unzipWithPassword static method
解压加密zip文件到目标路径
zipPath zip文件路径
targetPath 解压目标路径
password 解压密码
示例:
List<String> files = await ZipUtil.unzipWithPassword('a.enc.zip', './output', '123456');
返回结果: List<String> 返回解压出的全部文件路径列表
若解压密码错误,异常信息包含“密码错误”
Implementation
static Future<List<String>> unzipWithPassword(
String zipPath,
String targetPath,
String password,
) async {
try {
final bytes = await File(zipPath).readAsBytes();
final archive = ZipDecoder().decodeBytes(bytes, password: password);
final extractedFiles = <String>[];
for (final file in archive) {
final filename = file.name;
if (file.isFile) {
final data = file.content as List<int>;
final filePath = '$targetPath${Platform.pathSeparator}$filename';
final outFile = File(filePath);
await outFile.parent.create(recursive: true);
await outFile.writeAsBytes(data);
extractedFiles.add(filePath);
}
}
return extractedFiles;
} catch (e) {
if (e.toString().contains('Invalid password')) {
throw Exception('密码错误');
}
throw Exception('解压错误: $e');
}
}