unzipToTemp static method
Implementation
static Future<String> unzipToTemp(String zipFilePath) async {
final sourceFile = File(zipFilePath);
if (!await sourceFile.exists()) {
throw Exception('Source file not found: $zipFilePath');
}
/// 1. Create Temp Directory
final tmpDir = await Directory.systemTemp.createTemp('opentool_unpack_');
final extractDir = p.join(
tmpDir.path,
p.basenameWithoutExtension(zipFilePath),
);
await Directory(extractDir).create(recursive: true);
/// 2. Unzip
final bytes = await sourceFile.readAsBytes();
final archive = ZipDecoder().decodeBytes(bytes);
for (final file in archive) {
final filePath = p.join(extractDir, file.name);
if (file.isFile) {
final outFile = File(filePath);
await outFile.create(recursive: true);
await outFile.writeAsBytes(file.content as List<int>);
} else {
await Directory(filePath).create(recursive: true);
}
}
return extractDir;
}