GZipStream Třída

Definice

Poskytuje metody a vlastnosti používané ke komprimaci a dekompresi datových proudů pomocí specifikace formátu dat GZip.Provides methods and properties used to compress and decompress streams by using the GZip data format specification.

public ref class GZipStream : System::IO::Stream
public class GZipStream : System.IO.Stream
type GZipStream = class
    inherit Stream
Public Class GZipStream
Inherits Stream
Dědičnost

Příklady

Následující příklad ukazuje, jak použít třídu GZipStream pro komprimaci a dekompresi adresáře souborů.The following example shows how to use the GZipStream class to compress and decompress a directory of files.

using System;
using System.IO;
using System.IO.Compression;

public class Program
{
    private static string directoryPath = @".\temp";
    public static void Main()
    {
        DirectoryInfo directorySelected = new DirectoryInfo(directoryPath);
        Compress(directorySelected);

        foreach (FileInfo fileToDecompress in directorySelected.GetFiles("*.gz"))
        {
            Decompress(fileToDecompress);
        }
    }

    public static void Compress(DirectoryInfo directorySelected)
    {
        foreach (FileInfo fileToCompress in directorySelected.GetFiles())
        {
            using (FileStream originalFileStream = fileToCompress.OpenRead())
            {
                if ((File.GetAttributes(fileToCompress.FullName) & 
                   FileAttributes.Hidden) != FileAttributes.Hidden & fileToCompress.Extension != ".gz")
                {
                    using (FileStream compressedFileStream = File.Create(fileToCompress.FullName + ".gz"))
                    {
                        using (GZipStream compressionStream = new GZipStream(compressedFileStream, 
                           CompressionMode.Compress))
                        {
                            originalFileStream.CopyTo(compressionStream);
                        }
                    }
                    FileInfo info = new FileInfo(directoryPath + Path.DirectorySeparatorChar + fileToCompress.Name + ".gz");
                    Console.WriteLine($"Compressed {fileToCompress.Name} from {fileToCompress.Length.ToString()} to {info.Length.ToString()} bytes.");
                }
            }
        }
    }

    public static void Decompress(FileInfo fileToDecompress)
    {
        using (FileStream originalFileStream = fileToDecompress.OpenRead())
        {
            string currentFileName = fileToDecompress.FullName;
            string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length);

            using (FileStream decompressedFileStream = File.Create(newFileName))
            {
                using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
                {
                    decompressionStream.CopyTo(decompressedFileStream);
                    Console.WriteLine($"Decompressed: {fileToDecompress.Name}");
                }
            }
        }
    }
}
Imports System.IO
Imports System.IO.Compression

Module Module1

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

        For Each fileToDecompress As FileInfo In directorySelected.GetFiles("*.gz")
            Decompress(fileToDecompress)
        Next
    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)

                            originalFileStream.CopyTo(compressionStream)
                        End Using
                    End Using
                    Dim info As New FileInfo(directoryPath & Path.DirectorySeparatorChar & fileToCompress.Name & ".gz")
                    Console.WriteLine($"Compressed {fileToCompress.Name} from {fileToCompress.Length.ToString()} to {info.Length.ToString()} bytes.")

                End If
            End Using
        Next
    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)
                    decompressionStream.CopyTo(decompressedFileStream)
                    Console.WriteLine($"Decompressed: {fileToDecompress.Name}")
                End Using
            End Using
        End Using
    End Sub
End Module

Poznámky

Tato třída reprezentuje datový formát gzip, který používá standardní algoritmus pro bezeztrátovou kompresi souborů a dekompresi.This class represents the gzip data format, which uses an industry-standard algorithm for lossless file compression and decompression. Tento formát zahrnuje cyklickou kontrolní hodnotu pro zjištění poškození dat.The format includes a cyclic redundancy check value for detecting data corruption. Formát dat gzip používá stejný algoritmus jako třída DeflateStream, ale lze ho rozšířit tak, aby používala jiné formáty komprese.The gzip data format uses the same algorithm as the DeflateStream class, but can be extended to use other compression formats. Formát lze snadno implementovat způsobem, který nepokrývá patenty.The format can be readily implemented in a manner not covered by patents.

Počínaje .NET Framework 4.5.NET Framework 4.5třída DeflateStream používá ke kompresi knihovnu zlib.Starting with the .NET Framework 4.5.NET Framework 4.5, the DeflateStream class uses the zlib library for compression. Výsledkem je, že poskytuje lepší kompresní algoritmus a ve většině případů menší komprimovaný soubor, než je v dřívějších verzích .NET Framework.As a result, it provides a better compression algorithm and, in most cases, a smaller compressed file than it provides in earlier versions of the .NET Framework.

Komprimované GZipStream objekty zapsané do souboru s příponou. gz lze dekomprimovat pomocí mnoha běžných kompresních nástrojů. Tato třída ale v podstatě neposkytuje funkce pro přidávání souborů do nebo extrakce souborů z archivů ZIP.Compressed GZipStream objects written to a file with an extension of .gz can be decompressed using many common compression tools; however, this class does not inherently provide functionality for adding files to or extracting files from zip archives.

Funkce komprese v DeflateStream a GZipStream je vystavena jako datový proud.The compression functionality in DeflateStream and GZipStream is exposed as a stream. Data jsou čtena po bajtech, takže není možné provést více průchodů k určení nejlepší metody pro komprimaci celých souborů nebo velkých bloků dat.Data is read on a byte-by-byte basis, so it is not possible to perform multiple passes to determine the best method for compressing entire files or large blocks of data. Třídy DeflateStream a GZipStream jsou nejlépe použity u nekomprimovaných zdrojů dat.The DeflateStream and GZipStream classes are best used on uncompressed sources of data. Pokud jsou zdrojová data již komprimovaná, může použití těchto tříd ve skutečnosti zvětšit velikost datového proudu.If the source data is already compressed, using these classes may actually increase the size of the stream.

Poznámky pro dědice

Při dědění z GZipStreammusíte přepsat následující členy: CanSeek, CanWritea CanRead.When you inherit from GZipStream, you must override the following members: CanSeek, CanWrite, and CanRead.

Konstruktory

GZipStream(Stream, CompressionLevel)

Inicializuje novou instanci třídy GZipStream pomocí zadaného datového proudu a úrovně komprese.Initializes a new instance of the GZipStream class by using the specified stream and compression level.

GZipStream(Stream, CompressionLevel, Boolean)

Inicializuje novou instanci třídy GZipStream pomocí zadaného datového proudu a úrovně komprese a volitelně ponechá datový proud otevřený.Initializes a new instance of the GZipStream class by using the specified stream and compression level, and optionally leaves the stream open.

GZipStream(Stream, CompressionMode)

Inicializuje novou instanci třídy GZipStream pomocí zadaného datového proudu a kompresního režimu.Initializes a new instance of the GZipStream class by using the specified stream and compression mode.

GZipStream(Stream, CompressionMode, Boolean)

Inicializuje novou instanci třídy GZipStream pomocí zadaného datového proudu a kompresního režimu a volitelně ponechá datový proud otevřený.Initializes a new instance of the GZipStream class by using the specified stream and compression mode, and optionally leaves the stream open.

Vlastnosti

BaseStream

Získá odkaz na podkladový datový proud.Gets a reference to the underlying stream.

CanRead

Načte hodnotu, která označuje, jestli datový proud podporuje čtení při dekompresi souboru.Gets a value indicating whether the stream supports reading while decompressing a file.

CanSeek

Načte hodnotu, která označuje, jestli datový proud podporuje hledání.Gets a value indicating whether the stream supports seeking.

CanTimeout

Získá hodnotu, která určuje, zda aktuální datový proud může vyprší časový limit.Gets a value that determines whether the current stream can time out.

(Zděděno od Stream)
CanWrite

Načte hodnotu, která označuje, jestli datový proud podporuje zápis.Gets a value indicating whether the stream supports writing.

Length

Tato vlastnost není podporována a vždy vyvolá NotSupportedException.This property is not supported and always throws a NotSupportedException.

Position

Tato vlastnost není podporována a vždy vyvolá NotSupportedException.This property is not supported and always throws a NotSupportedException.

ReadTimeout

Získá nebo nastaví hodnotu v milisekundách, která určuje, jak dlouho se datový proud před vypršením časového limitu pokusí přečíst.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Zděděno od Stream)
WriteTimeout

Získá nebo nastaví hodnotu v milisekundách, která určuje, jak dlouho se datový proud před vypršením časového limitu pokusí zapisovat.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Zděděno od Stream)

Metody

BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Zahájí asynchronní operaci čtení.Begins an asynchronous read operation. (Zvažte místo toho použití metody ReadAsync(Byte[], Int32, Int32).)(Consider using the ReadAsync(Byte[], Int32, Int32) method instead.)

BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Spustí asynchronní operaci zápisu.Begins an asynchronous write operation. (Zvažte místo toho použití metody WriteAsync(Byte[], Int32, Int32).)(Consider using the WriteAsync(Byte[], Int32, Int32) method instead.)

Close()

Zavře aktuální datový proud a uvolní všechny prostředky (například sokety a popisovače souborů) přidružené k aktuálnímu datovému proudu.Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. Místo volání této metody zajistěte, aby byl datový proud správně uvolněn.Instead of calling this method, ensure that the stream is properly disposed.

(Zděděno od Stream)
CopyTo(Stream)

Přečte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu.Reads the bytes from the current stream and writes them to another stream.

(Zděděno od Stream)
CopyTo(Stream, Int32)

Přečte bajty z aktuálního datového proudu GZip a zapisuje je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti.Reads the bytes from the current GZip stream and writes them to another stream, using a specified buffer size.

CopyToAsync(Stream)

Asynchronně načte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Zděděno od Stream)
CopyToAsync(Stream, CancellationToken)

Asynchronně načte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadaného tokenu zrušení.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Zděděno od Stream)
CopyToAsync(Stream, Int32)

Asynchronně načte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Zděděno od Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Asynchronně načte bajty z aktuálního datového proudu GZip a zapisuje je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti.Asynchronously reads the bytes from the current GZip stream and writes them to another stream, using a specified buffer size.

CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace požadované pro vygenerování proxy serveru, který se používá ke komunikaci se vzdáleným objektem.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Zděděno od MarshalByRefObject)
CreateWaitHandle()

Přidělí objekt WaitHandle.Allocates a WaitHandle object.

(Zděděno od Stream)
Dispose()

Uvolní všechny prostředky, které Streampoužívá.Releases all resources used by the Stream.

(Zděděno od Stream)
Dispose(Boolean)

Uvolní nespravované prostředky používané GZipStream a volitelně uvolňuje spravované prostředky.Releases the unmanaged resources used by the GZipStream and optionally releases the managed resources.

DisposeAsync()

Asynchronně uvolňuje nespravované prostředky, které používá GZipStream.Asynchronously releases the unmanaged resources used by the GZipStream.

EndRead(IAsyncResult)

Čeká na dokončení probíhajícího asynchronního čtení.Waits for the pending asynchronous read to complete. (Zvažte místo toho použití metody ReadAsync(Byte[], Int32, Int32).)(Consider using the ReadAsync(Byte[], Int32, Int32) method instead.)

EndWrite(IAsyncResult)

Zpracovává konec asynchronní operace zápisu.Handles the end of an asynchronous write operation. (Zvažte místo toho použití metody WriteAsync(Byte[], Int32, Int32).)(Consider using the WriteAsync(Byte[], Int32, Int32) method instead.)

Equals(Object)

Určuje, zda se zadaný objekt rovná aktuálnímu objektu.Determines whether the specified object is equal to the current object.

(Zděděno od Object)
Flush()

Vyprázdní vnitřní vyrovnávací paměti.Flushes the internal buffers.

FlushAsync()

Asynchronně vymaže všechny vyrovnávací paměti pro tento datový proud a způsobí, že všechna data uložená do vyrovnávací paměti se zapisují do základního zařízení.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Zděděno od Stream)
FlushAsync(CancellationToken)

Asynchronně vymaže všechny vyrovnávací paměti pro tento datový proud GZip, způsobí, že všechna data uložená do vyrovnávací paměti se zapisují do základního zařízení a monitorují žádosti o zrušení.Asynchronously clears all buffers for this GZip stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests.

GetHashCode()

Slouží jako výchozí funkce hash.Serves as the default hash function.

(Zděděno od Object)
GetLifetimeService()

Načte aktuální objekt služby životnosti, který řídí zásady životního cyklu pro tuto instanci.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Zděděno od MarshalByRefObject)
GetType()

Získá Type aktuální instance.Gets the Type of the current instance.

(Zděděno od Object)
InitializeLifetimeService()

Získá objekt služby životnosti, který řídí zásady životního cyklu pro tuto instanci.Obtains a lifetime service object to control the lifetime policy for this instance.

(Zděděno od MarshalByRefObject)
MemberwiseClone()

Vytvoří kopii aktuálního Objectbez podstruktury.Creates a shallow copy of the current Object.

(Zděděno od Object)
MemberwiseClone(Boolean)

Vytvoří kopii aktuálního objektu MarshalByRefObject bez podstruktury.Creates a shallow copy of the current MarshalByRefObject object.

(Zděděno od MarshalByRefObject)
ObjectInvariant()

Poskytuje podporu pro Contract.Provides support for a Contract.

(Zděděno od Stream)
Read(Byte[], Int32, Int32)

Přečte počet dekomprimovaných bajtů do zadaného bajtového pole.Reads a number of decompressed bytes into the specified byte array.

Read(Span<Byte>)

Přečte sekvenci bajtů z aktuálního datového proudu GZip do bajtového rozsahu a Posune pozici v rámci datového proudu GZip o počet přečtených bajtů.Reads a sequence of bytes from the current GZip stream into a byte span and advances the position within the GZip stream by the number of bytes read.

ReadAsync(Byte[], Int32, Int32)

Asynchronně přečte sekvenci bajtů z aktuálního datového proudu a Posune pozici v rámci datového proudu o počet přečtených bajtů.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Zděděno od Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronně přečte sekvenci bajtů z aktuálního datového proudu GZip do bajtového pole, Posune pozici v rámci datového proudu GZip o počet přečtených bajtů a monitoruje žádosti o zrušení.Asynchronously reads a sequence of bytes from the current GZip stream into a byte array, advances the position within the GZip stream by the number of bytes read, and monitors cancellation requests.

ReadAsync(Memory<Byte>, CancellationToken)

Asynchronně přečte sekvenci bajtů z aktuálního datového proudu GZip do oblasti paměti bajtů, Posune pozici v rámci datového proudu GZip o počet přečtených bajtů a monitoruje žádosti o zrušení.Asynchronously reads a sequence of bytes from the current GZip stream into a byte memory region, advances the position within the GZip stream by the number of bytes read, and monitors cancellation requests.

ReadByte()

Přečte bajt z datového proudu GZip a Posune pozici v rámci datového proudu o jeden bajt, nebo vrátí hodnotu-1, pokud na konci streamu GZip.Reads a byte from the GZip stream and advances the position within the stream by one byte, or returns -1 if at the end of the GZip stream.

Seek(Int64, SeekOrigin)

Tato vlastnost není podporována a vždy vyvolá NotSupportedException.This property is not supported and always throws a NotSupportedException.

SetLength(Int64)

Tato vlastnost není podporována a vždy vyvolá NotSupportedException.This property is not supported and always throws a NotSupportedException.

ToString()

Vrací řetězec, který představuje aktuální objekt.Returns a string that represents the current object.

(Zděděno od Object)
Write(Byte[], Int32, Int32)

Zapisuje zkomprimované bajty do podkladového datového proudu GZip ze zadaného bajtového pole.Writes compressed bytes to the underlying GZip stream from the specified byte array.

Write(ReadOnlySpan<Byte>)

Zapíše sekvenci bajtů k aktuálnímu datovému proudu GZip z rozsahu bajtů jen pro čtení a Posune aktuální pozici v rámci tohoto datového proudu GZip pomocí počtu zapsaných bajtů.Writes a sequence of bytes to the current GZip stream from a read-only byte span and advances the current position within this GZip stream by the number of bytes written.

WriteAsync(Byte[], Int32, Int32)

Asynchronně zapisuje sekvenci bajtů do aktuálního datového proudu a Posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Zděděno od Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronně zapisuje zkomprimované bajty do podkladového datového proudu GZip ze zadaného bajtového pole.Asynchronously writes compressed bytes to the underlying GZip stream from the specified byte array.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchronně zapisuje zkomprimované bajty do podkladového datového proudu GZip ze zadané oblasti paměti typu jen pro čtení.Asynchronously writes compressed bytes to the underlying GZip stream from the specified read-only byte memory region.

WriteByte(Byte)

Zapíše bajt na aktuální pozici v datovém proudu a Posune pozici v rámci datového proudu o jeden bajt.Writes a byte to the current position in the stream and advances the position within the stream by one byte.

(Zděděno od Stream)

Explicitní implementace rozhraní

IDisposable.Dispose()

Uvolní všechny prostředky, které Streampoužívá.Releases all resources used by the Stream.

(Zděděno od Stream)

Metody rozšíření

AsInputStream(Stream)

Převede spravovaný datový proud v rozhraní .NET pro aplikace pro Windows Store na vstupní datový proud v prostředí Windows Runtime.Converts a managed stream in the .NET for Windows Store apps to an input stream in the Windows Runtime.

AsOutputStream(Stream)

Převede spravovaný datový proud v rozhraní .NET pro aplikace pro Windows Store na výstupní datový proud v prostředí Windows Runtime.Converts a managed stream in the .NET for Windows Store apps to an output stream in the Windows Runtime.

AsRandomAccessStream(Stream)

Převede zadaný datový proud na datový proud s náhodným přístupem.Converts the specified stream to a random access stream.

Platí pro