Use the CanWrite property to determine whether the current instance supports writing.
If the write operation is successful, the position within the stream advances by the number of bytes written. If an exception occurs, the position within the stream remains unchanged.
Example
The following example demonstrates how to read data from a FileStream and compress it to a
MemoryStream using the GZipCompressedStream class.
Imports System.IO
Imports Xceed.Compression
Imports Xceed.Compression.Formats
Dim sourceStream AsNew FileStream("d:\data.txt", FileMode.Open)
' If you do not want the inner stream to be closed by the GZipCompressedStream
' then set the GZipCompressedStream's Transient property to true.
Dim destinationStream AsNew MemoryStream()
Dim gzip AsNew GZipCompressedStream(destinationStream)
'32K at a time.
Dim buffer(32768) AsByteDim bytesRead AsInteger = 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
gzip.Write(buffer, 0, bytesRead)
EndIfLoopUntil bytesRead = 0
' Close the source stream and the GZipCompressedStream.
'
' Because the GZipCompressedStream will automatically close the destination
' memory stream, there is no need to call Close once we are done with the stream.
sourceStream.Close()
gzip.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 Xceed.Compression.Formats;
using( FileStream sourceStream = new FileStream( @"d:\data.txt", FileMode.Open ) )
{
// Because the GZipCompressedStream 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 GZipCompressedStream
// then set the GZipCompressedStream's Transient property to true.
MemoryStream destinationStream = new MemoryStream();
using( GZipCompressedStream gzip = new GZipCompressedStream( destinationStream ) )
{
// 32K at a time.
byte[] buffer = newbyte[ 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 )
{
gzip.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.
}
Example
Imports System.IO
Imports Xceed.Compression
Imports Xceed.Compression.Formats
Dim sourceStream As New FileStream("d:\data.txt", FileMode.Open)
' If you do not want the inner stream to be closed by the GZipCompressedStream
' then set the GZipCompressedStream's Transient property to true.
Dim destinationStream As New MemoryStream()
Dim gzip As New GZipCompressedStream(destinationStream)
'32K at a 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
gzip.Write(buffer, 0, bytesRead)
End If
Loop Until bytesRead = 0
' Close the source stream and the GZipCompressedStream.
'
' Because the GZipCompressedStream will automatically close the destination
' memory stream, there is no need to call Close once we are done with the stream.
sourceStream.Close()
gzip.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 Xceed.Compression.Formats;
using( FileStream sourceStream = new FileStream( @"d:\data.txt", FileMode.Open ) )
{
// Because the GZipCompressedStream 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 GZipCompressedStream
// then set the GZipCompressedStream's Transient property to true.
MemoryStream destinationStream = new MemoryStream();
using( GZipCompressedStream gzip = new GZipCompressedStream( destinationStream ) )
{
// 32K at a 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 )
{
gzip.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.
}