More .NET libraries
-
Rebex Total Pack
All Rebex .NET libraries together
Back to feature list...
GZIP
On this page:
Creating GZIP archives
To create a GZIP file, use Gzip.Compress()
method:
// compress data to GZIP file // (new GZIP file is created = existing GZIP file is overwritten) var gzip = new Rebex.IO.Compression.Gzip(); gzip.Compress(@"C:\MyData\file.txt", TraversalMode.MatchFilesShallow, @"C:\MyData\file.txt.gz");
Note: GZIP specification makes it possible to include more than one file in a GZIP archive. However, many GZIP readers can only access the first file in the GZIP archive, so it's better not to utilize this feature.
Extracting GZIP archives
To extract a GZIP file, use Gzip.Decompress()
method:
// decompress data from GZIP file // (overwrite already-existing files in the target directory) var gzip = new Rebex.IO.Compression.Gzip(); gzip.Decompress(@"C:\MyData\file.txt.gz", @"C:\MyData");
Note: This will extract all files from the GZIP archive. However, most GZIP archives only contain a single file.
Creating GZIP using stream-based API
To fine-tune creation of GZIP files, use the GzipCompressionStream
class.
This makes it possible to create files to be compressed on-the-fly, create archives in memory, and more.
// initialize GZIP compression stream using (var gzip = new Rebex.IO.Compression.Streams.GzipCompressionStream( File.Open(@"C:\MyData\on-the-fly.txt.gz", FileMode.CreateNew), // underlying stream OpenMode.Write, // mode of operation "on-the-fly.txt" // name of file in .gz file )) { // write some text into the stream using (var writer = new StreamWriter(gzip)) { writer.WriteLine("Content of this file,"); writer.WriteLine("was created on the fly."); } }
Note: GZIP specification makes it possible to include more than one file in a GZIP archive. However, many GZIP readers can only access the first file in the GZIP archive, so it's better not to utilize this feature.
Extracting GZIP using stream-based API
To fine-tune extraction of GZIP files, use the GzipDecompressionStream
class.
// initialize GZIP decompression stream using (var gzip = new Rebex.IO.Compression.Streams.GzipDecompressionStream( File.OpenRead(@"C:\MyData\file.txt.gz"), OpenMode.Read)) { // iterate through all files inside GZIP archive // (unless you only wish to process the first one) while (gzip.ReadNextFileHeader()) { Console.WriteLine("Extracting file '{0}'", gzip.FileName); // read everything from current GZIP item into a memory stream var ms = new MemoryStream(); gzip.CopyTo(ms); Console.WriteLine("Decompressed length: {0} bytes", ms.Length); } }
Back to feature list...