GZipStream.EndRead Method (IAsyncResult)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Waits for the pending asynchronous read to complete. (Consider using the the Stream.ReadAsync method instead; see the Remarks section.)

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

Public Overrides Function EndRead (
	asyncResult As IAsyncResult
) As Integer


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 0 (zero) and the number of bytes you requested. GZipStream returns 0 only at the end of the stream; otherwise, it blocks until at least one byte is available.

Exception Condition

asyncResult is null.


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


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

Starting with the .NET Framework 4.5, you can perform asynchronous read operations by using the Stream.ReadAsync method. The EndRead method is still available in .NET Framework 4.5 to support legacy code; however, you can implement asynchronous I/O operations more easily by using the new async methods. For more information, see .

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

    Private directoryPath As String = "c:\temp"
    Public Sub Main()
        Dim directorySelected As New DirectoryInfo(directoryPath)

        For Each fileToDecompress As FileInfo In directorySelected.GetFiles("*.gz")
    End Sub

    Public Sub Compress(directorySelected As DirectoryInfo)
        For Each fileToCompress As FileInfo In directorySelected.GetFiles()
            Using originalFileStream As FileStream = fileToCompress.OpenRead()
                If (File.GetAttributes(fileToCompress.FullName) And FileAttributes.Hidden) <> FileAttributes.Hidden And fileToCompress.Extension <> ".gz" Then
                    Using compressedFileStream As FileStream = File.Create(fileToCompress.FullName & ".gz")
                        Using compressionStream As New GZipStream(compressedFileStream, CompressionMode.Compress)

                        End Using
                    End Using
                    Dim info As New FileInfo(directoryPath & "\" & fileToCompress.Name & ".gz")
                    Console.WriteLine("Compressed {0} from {1} to {2} bytes.", fileToCompress.Name,
                                      fileToCompress.Length.ToString(), info.Length.ToString())

                End If
            End Using
    End Sub

    Private Sub Decompress(ByVal fileToDecompress As FileInfo)
        Using originalFileStream As FileStream = fileToDecompress.OpenRead()
            Dim currentFileName As String = fileToDecompress.FullName
            Dim newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length)

            Using decompressedFileStream As FileStream = File.Create(newFileName)
                Using decompressionStream As GZipStream = New GZipStream(originalFileStream, CompressionMode.Decompress)
                    Console.WriteLine("Decompressed: {0}", fileToDecompress.Name)
                End Using
            End Using
        End Using
    End Sub
End Module

.NET Framework
Available since 2.0
Portable Class Library
Supported in: portable .NET platforms
Return to top