This documentation is archived and is not being maintained.

DeflateStream Constructor (Stream, CompressionMode)

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

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

Public Sub New ( _
	stream As Stream, _
	mode As CompressionMode _


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


stream is Nothing.


mode is not a valid CompressionMode value.


CompressionMode is Compress and CanWrite is false.


CompressionMode is Decompress and CanRead is false.

By default, DeflateStream owns the underlying stream, so closing the stream 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 DeflateStream class is created with the mode parameter equal to Compress, header information is inserted immediately. If no further action occurs, the stream appears as a valid, empty, compressed file.

Using the DeflateStream class to compress a file larger than 4 GB raises an exception.

The following example shows how to use the DeflateStream class to compress and decompress a file.

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

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

        Dim di As DirectoryInfo = New DirectoryInfo(dirpath)

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

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

    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 <> ".cmp" Then
                ' Create the compressed file.
                Using outFile As FileStream = File.Create(fi.FullName + ".cmp")
                    Using Compress As DeflateStream = New DeflateStream(outFile, _
                        ' Copy the source file into the compression stream.

                        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.cmp.
            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 DeflateStream = New DeflateStream(inFile, _

            		' Copy the decompression stream into the output file.
                    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.