tag | 8bee51091786de1e43008b4da47ead451468d792 | |
---|---|---|
tagger | Brendan Duncan <brendanduncan@gmail.com> | Sat Apr 27 03:31:51 2024 |
object | cfa3723f46107b68d7d5de6331e37d842fa48106 |
commit | cfa3723f46107b68d7d5de6331e37d842fa48106 | [log] [tgz] |
---|---|---|
author | Brendan Duncan <brendanduncan@gmail.com> | Sat Apr 27 03:31:12 2024 |
committer | Brendan Duncan <brendanduncan@gmail.com> | Sat Apr 27 03:31:12 2024 |
tree | 26ff4aa8e2ba8abbb459397044f8ce95911b12eb | |
parent | 36882839f6f840109aa05c553f101234173c094e [diff] |
Update CHANGELOG.md
A Dart library to encode and decode various archive and compression formats.
The archive library currently supports the following decoders:
And the following encoders:
There are two versions of the Archive library:
package:archive/archive.dart
package:archive/archive_io.dart
archive.dart
are included in archive_io.dart
.The archive_io library contains classes and functions for accessing the file system. These classes and functions can significantly reduce memory usage for decoding archives directly to disk.
import 'package:archive/archive_io.dart'; // ... // Use an InputFileStream to access the zip file without storing it in memory. final inputStream = InputFileStream('test.zip'); // Decode the zip from the InputFileStream. The archive will have the contents of the // zip, without having stored the data in memory. final archive = ZipDecoder().decodeBuffer(inputStream); // For all of the entries in the archive for (var file in archive.files) { // If it's a file and not a directory if (file.isFile) { // Write the file content to a directory called 'out'. // In practice, you should make sure file.name doesn't include '..' paths // that would put it outside of the extraction directory. // An OutputFileStream will write the data to disk. final outputStream = OutputFileStream('out/${file.name}'); // The writeContent method will decompress the file content directly to disk without // storing the decompressed data in memory. file.writeContent(outputStream); // Make sure to close the output stream so the File is closed. outputStream.close(); } }
extractFileToDisk
is a convenience function to extract the contents of an archive file directory to an output directory. The type of archive it is will be determined by the file extension.
import 'package:archive/archive_io.dart'; // ... extractFileToDisk('test.zip', 'out');
extractArchiveToDisk
is a convenience function to write the contents of an Archive to an output directory.
import 'package:archive/archive_io.dart'; // ... // Use an InputFileStream to access the zip file without storing it in memory. final inputStream = InputFileStream('test.zip'); // Decode the zip from the InputFileStream. The archive will have the contents of the // zip, without having stored the data in memory. final archive = ZipDecoder().decodeBuffer(inputStream); extractArchiveToDisk(archive, 'out');