tag | eca780d33623e1b8910f22a4fe7c2ed13a9fc601 | |
---|---|---|
tagger | Brendan Duncan <brendanduncan@gmail.com> | Mon Oct 02 00:20:30 2023 |
object | 0fbc714e8523accb6c2df538b9da2d636e31441f |
commit | 0fbc714e8523accb6c2df538b9da2d636e31441f | [log] [tgz] |
---|---|---|
author | Brendan Duncan <brendanduncan@gmail.com> | Mon Oct 02 00:20:20 2023 |
committer | Brendan Duncan <brendanduncan@gmail.com> | Mon Oct 02 00:20:20 2023 |
tree | 0061d41d86c7d7e791e0dd4f842d98ee2062c4c7 | |
parent | f397e3042787e7e6ad349d7ca3ef0e6d0b42bac2 [diff] |
Update to 3.4.5
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');