tag | a11806840c00d06f3b0b4a6f5ccf67d3245c4eec | |
---|---|---|
tagger | Brendan Duncan <brendanduncan@gmail.com> | Wed Jan 03 01:25:04 2024 |
object | 187d72307d3a1550b2cf5e232b4f70925c921a45 |
commit | 187d72307d3a1550b2cf5e232b4f70925c921a45 | [log] [tgz] |
---|---|---|
author | Brendan Duncan <brendanduncan@gmail.com> | Tue Jan 02 05:36:13 2024 |
committer | Brendan Duncan <brendanduncan@gmail.com> | Tue Jan 02 05:36:13 2024 |
tree | 584d2db175045e26a1ea961837016e3bc68aaac7 | |
parent | c394e7d32d63100bcaf863aaabcbb84e21d2dfd0 [diff] |
Fix ZipCrypto password decoding
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');