archive 3.6.0 archive: ^3.6.0 copied to clipboard
Provides encoders and decoders for various archive and compression formats such as zip, tar, bzip2, gzip, and zlib.
import 'dart:io';
import 'package:archive/archive_io.dart';
Future<void> 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<int>;
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();
}