Skip to content

An asynchronous ZIP archive reading/writing crate.

License

Notifications You must be signed in to change notification settings

citreae535/rs-async-zip

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

async_zip

Crates.io Crates.io docs.rs GitHub Workflow Status (branch) GitHub

An asynchronous ZIP archive reading/writing crate powered by tokio.

Features

  • Support for Stored, Deflate, bzip2, LZMA, zstd, and xz compression methods.
  • Various different reading approaches (seek, stream, filesystem, in-memory buffer, etc).
  • Support for writing complete data (u8 slices) or streams using data descriptors.
  • Aims for reasonable specification compliance.

Installation & Basic Usage

[dependencies]
async_zip = "0.0.9"

A (soon to be) extensive list of examples can be found under the /examples directory.

Reading

use tokio::{io::AsyncReadExt, fs::File};
use async_zip::read::seek::ZipFileReader;
...

let mut file = File::open("./Archive.zip").await.unwrap();
let mut zip = ZipFileReader::new(&mut file).await.unwrap();

let mut reader = zip.entry_reader(0).await.unwrap();
let txt = reader.read_to_string_crc().await.unwrap();

println!("{}", txt);

Writing

use async_zip::write::ZipFileWriter;
use async_zip::{Compression, ZipEntryBuilder};
use tokio::fs::File;
...

let mut file = File::create("foo.zip").await.unwrap();
let mut writer = ZipFileWriter::new(&mut file);

let data = b"This is an example file.";
let builder = ZipEntryBuilder::new(String::from("bar.txt"), Compression::Deflate);

writer.write_entry_whole(builder, data).await.unwrap();
writer.close().await.unwrap();

Contributions

Whilst I will be continuing to maintain this crate myself, reasonable specification compliance is a huge undertaking for a single individual. As such, contributions will always be encouraged and appreciated.

No contribution guidelines exist but additions should be developed with readability in mind, with appropriate comments, and make use of rustfmt.

Issues & Support

Whether you're wanting to report a bug you've come across during use of this crate or are seeking general help/assistance, please utilise the issues tracker and provide as much detail as possible (eg. recreation steps).

I try to respond to issues within a reasonable timeframe.

About

An asynchronous ZIP archive reading/writing crate.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%