import 'dart:io'; import 'package:archive/archive_io.dart'; Future main() async { // Read the Zip file from disk. final bytes = File('test.zip').readAsBytesSync(); // Decode the Zip file final archive = ZipDecoder().decodeBytes(bytes); // Extract the contents of the Zip archive to disk. for (final file in archive) { final filename = file.name; if (file.isFile) { final data = file.content as List; File('out/$filename') ..createSync(recursive: true) ..writeAsBytesSync(data); } else { Directory('out/$filename').createSync(recursive: true); } } // Encode the archive as a BZip2 compressed Tar file. final tarData = TarEncoder().encode(archive); final tarBz2 = BZip2Encoder().encode(tarData); // Write the compressed tar file to disk. final fp = File('test.tbz'); fp.writeAsBytesSync(tarBz2); // Zip a directory to out.zip using the zipDirectory convenience method var encoder = ZipFileEncoder(); await encoder.zipDirectoryAsync(Directory('out'), filename: 'out.zip'); // Manually create a zip of a directory and individual files. encoder.create('out2.zip'); await encoder.addDirectory(Directory('out')); await encoder.addFile(File('test.zip')); encoder.closeSync(); }