Skip to content

Compression

Paul Hirch edited this page May 13, 2024 · 4 revisions

Compression

Expansion methods for BinaryView, found under the Grille.IO.Compression namespace.

These methods utilize the built-in compression streams under System.IO.Compression

Compress Section

Because of limitations of the CompressionStream classes, sections always need a length prefix.

Write

using var bw = new BinaryViewWriter(stream);

// write uncompressed

// Creates and CompressionStream and pushes it onto stack.
bw.BeginCompressedSection(CompressionType.Deflate);

// write compressed

// Pops CompressionStream from stack, write length prefix and, copy compresed data to peak stream.
bw.EndCompressedSection();

// write uncompressed

Read

using var br = new BinaryViewReader(stream);

// read uncompressed

// Read length prefix, Creates DecompressionStream and copy compressed data into it.
br.BeginCompressedSection(CompressionType.Deflate);

// read compressed

// Pops DecompressionStream from stack.
br.EndCompressedSection();

// read uncompressed

Using syntax is also supported.

using var bw = new BinaryViewWriter(stream);

// write uncompressed

using (bw.BeginCompressedSection(CompressionType.Deflate))
{
    // write compressed
}
// write uncompressed

Compress All

Compresses/Decompresses all data after this statement. A length prefix is not needed.

Write

using var bw = new BinaryViewWriter(stream);

// write uncompressed

// Creates CompressionStream and pushes it onto stack.
bw.CompressAll(CompressionType.Deflate);

// write compressed

Read

using var br = new BinaryViewReader(stream);

// read uncompressed

// Creat and push DecompressionStream and copy all data after into it.
br.DecompressAll(CompressionType.Deflate);

// read compressed
Clone this wiki locally