Export (0) Print
Expand All

GZipStream.EndRead Method

Waits for the pending asynchronous read to complete.

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

'Declaration
Public Overrides Function EndRead ( _
	asyncResult As IAsyncResult _
) As Integer

Parameters

asyncResult
Type: System.IAsyncResult
The reference to the pending asynchronous request to finish.

Return Value

Type: System.Int32
The number of bytes read from the stream, between zero (0) and the number of bytes you requested. GZipStream returns zero (0) only at the end of the stream; otherwise, it blocks until at least one byte is available.

ExceptionCondition
ArgumentNullException

asyncResult is Nothing.

ArgumentException

asyncResult did not originate from a BeginRead method on the current stream.

InvalidOperationException

The end operation cannot be performed because the stream is closed.

Call this method to determine how many bytes were read from the stream. This method can be called once to return the amount of bytes read between calls to BeginRead and EndRead.

This method blocks until the I/O operation has completed.

The following code example shows how to use the GZipStream 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\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.

Community Additions

ADD
Show:
© 2014 Microsoft