Write Method (CompressedStream)
Compresses and writes a sequence of bytes to the inner stream.
Parameters
- buffer
- An array of bytes. A maximum of bytes are taken from this array and compressed into the inner stream.
- offset
- The byte offset in at which to begin taking the data.
- count
- The maximum number of bytes to be taken from .
Return Value
The total number of bytes written to the inner stream. This may be less than the parameter. It may even be 0.
The following example demonstrates how to read data from a FileStream and compress it to a MemoryStream using the CompressedStream class.
Imports System.IO
Imports Xceed.Compression
Dim sourceStream As New FileStream("d:\data.txt", FileMode.Open)
' If you do not want the inner stream to be closed by the CompressedStream
' then set the CompressedStream's Transient property to true.
Dim destinationStream As New MemoryStream() Dim compStream As New CompressedStream( destinationStream )
'32K at at time.
Dim buffer(32768) As Byte Dim bytesRead As Integer = 0
' Loop until we have nothing more to read from the source stream.
Do
bytesRead = sourceStream.Read(buffer, 0, buffer.Length)
If bytesRead > 0 Then
compStream.Write(buffer, 0, bytesRead)
End If
Loop Until bytesRead = 0
' Close the source stream and the CompressedStream.
'
' Because the CompressedStream will automatically close the destination
' memory stream, there is no need to call Close once we are done with the stream.
sourceStream.Close()
compStream.Close()
' To get access to the MemoryStream's compressed data, you can use
' Dim compressedData() As Byte = destinationStream.ToArray()
' ToArray() works even when the memory stream is closed.
using System.IO;
using Xceed.Compression;
using( FileStream sourceStream = new FileStream( @"d:\data.txt", FileMode.Open ) )
{
// Because the CompressedStream will automatically close the destination
// memory stream, there is no need to declare the memory stream within a using
// statement or to call Close once we are done with the stream.
//
// If you do not want the inner stream to be closed by the CompressedStream
// then set the CompressedStream's Transient property to true.
MemoryStream destinationStream = new MemoryStream();
using( CompressedStream compStream = new CompressedStream( destinationStream ) )
{
// 32K at at time.
byte[] buffer = new byte[ 32768 ];
int bytesRead = 0;
// Loop until we have nothing more to read from the source stream.
while( ( bytesRead = sourceStream.Read( buffer, 0, buffer.Length ) ) > 0 )
{
compStream.Write( buffer, 0, bytesRead );
}
}
// To get access to the MemoryStream's compressed data, you can use
// byte[] compressedData = destinationStream.ToArray();
// ToArray() works even when the memory stream is closed.
}
.NET: net5.0, net5.0-windows, net6.0, net6.0-macos, net6.0-windows, net7.0, net7.0-macos, net7.0-windows, net8.0, net8.0-browser, net8.0-macos, net8.0-windows, net9.0, net9.0-browser, net9.0-macos, net9.0-windows, net10.0, net10.0-browser, net10.0-macos, net10.0-windows.
.NET Framework: net40, net403, net45, net451, net452, net46, net461, net462, net463, net47, net471, net472, net48, net481.