Export (0) Print
Expand All

GZipStream Constructor (Stream, CompressionMode)

Updated: January 2012

Initializes a new instance of the GZipStream class using the specified stream and CompressionMode value.

Namespace:  System.IO.Compression
Assembly:  System (in System.dll)

'Declaration
Public Sub New ( _
	stream As Stream, _
	mode As CompressionMode _
)

Parameters

stream
Type: System.IO.Stream
The stream to compress or decompress.
mode
Type: System.IO.Compression.CompressionMode
One of the CompressionMode values that indicates the action to take.

ExceptionCondition
ArgumentNullException

stream is Nothing.

ArgumentException

mode is not a valid CompressionMode enumeration value.

-or-

CompressionMode is Compress and CanWrite is false.

-or-

CompressionMode is Decompress and CanRead is false.

By default, GZipStream owns the underlying stream, so closing the stream parameter also closes the underlying stream. Note that the state of the underlying stream can affect the usability of the stream. Also, no explicit checks are performed, so no additional exceptions are thrown when the new instance is created.

If an instance of the GZipStream class is created with the mode parameter equal to Compress and no further action occurs, the stream will appear as a valid, empty compressed file.

The GZipStream class might not be able to decompress data that results in over 8 GB of uncompressed data.

The following example initializes a new instance of the GZipStream class with mode set to Compress. This example is part of a larger example provided for the GZipStream class.


Imports System.IO
Imports System.IO.Compression
Module Module1

    Sub Main()
        ' Path to directory of files to compress.
        Dim dirpath As String = "c:\users\public\reports"

        Dim di As DirectoryInfo = New DirectoryInfo(dirpath)


        ' Compress the directory's files.
        For Each fi As FileInfo In di.GetFiles()
            Compress(fi)
        Next

        ' Decompress all *.gz files in the directory.
        For Each fi As FileInfo In di.GetFiles("*.gz")
            Decompress(fi)
        Next

    End Sub

    ' Method to compress.
    Private Sub Compress(ByVal fi As FileInfo)
        ' Get the stream of the source file.
        Using inFile As FileStream = fi.OpenRead()
            ' Compressing:
            ' Prevent compressing hidden and already compressed files.

            If (File.GetAttributes(fi.FullName) And FileAttributes.Hidden) _
                <> FileAttributes.Hidden And fi.Extension <> ".gz" Then
                ' Create the compressed file.
                Using outFile As FileStream = File.Create(fi.FullName + ".gz")
                    Using Compress As GZipStream = _
                    	New GZipStream(outFile, CompressionMode.Compress)
                    	
                        ' Copy the source file into the compression stream.
                        inFile.CopyTo(Compress)

                        Console.WriteLine("Compressed {0} from {1} to {2} bytes.", _
                                          fi.Name, fi.Length.ToString(), outFile.Length.ToString())

                    End Using
                End Using
            End If
        End Using
    End Sub

    ' Method to decompress.
    Private Sub Decompress(ByVal fi As FileInfo)
        ' Get the stream of the source file.
        Using inFile As FileStream = fi.OpenRead()
            ' Get orignial file extension, for example "doc" from report.doc.gz.
            Dim curFile As String = fi.FullName
            Dim origName = curFile.Remove(curFile.Length - fi.Extension.Length)

            ' Create the decompressed file.
            Using outFile As FileStream = File.Create(origName)
                Using Decompress As GZipStream = New GZipStream(inFile, _
                	CompressionMode.Decompress)
            		
  						' Copy the decompression stream 
                        ' into the output file.
            		    Decompress.CopyTo(outFile)

                    Console.WriteLine("Decompressed: {0}", fi.Name)

                End Using
            End Using
        End Using
    End Sub
End Module


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Date

History

Reason

January 2012

Added information about decompression size limit.

Content bug fix.

March 2011

Corrected exceptions.

Information enhancement.

Community Additions

ADD
Show:
© 2014 Microsoft