zipDirectory static method
Implementation
static Future<void> zipDirectory(
String sourceDirPath,
String zipFilePath,
) async {
final sourceDir = Directory(sourceDirPath);
if (!await sourceDir.exists()) {
throw Exception('Source directory does not exist: $sourceDirPath');
}
final encoder = ZipEncoder();
final archive = Archive();
await for (var entity in sourceDir.list(
recursive: true,
followLinks: false,
)) {
if (entity is File) {
final relativePath = p.relative(entity.path, from: sourceDirPath);
final data = await entity.readAsBytes();
archive.addFile(ArchiveFile(relativePath, data.length, data));
}
}
final zipData = encoder.encode(archive);
final zipFile = File(zipFilePath);
await zipFile.parent.create(recursive: true);
await zipFile.writeAsBytes(zipData);
}