GZipStream Klasse

Definition

Stellt Methoden und Eigenschaften bereit, die zum Komprimieren und Dekomprimieren von Streams über die GZip-Datenformatspezifikation verwendet werden.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
Vererbung

Beispiele

Im folgenden Beispiel wird gezeigt, wie die GZipStream -Klasse zum Komprimieren und Dekomprimieren eines Dateiverzeichnisses verwendet wird.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

Hinweise

Diese Klasse stellt das GZIP-Datenformat dar, das einen Industriestandard-Algorithmus für die verlustfreie Dateikomprimierung und-Dekomprimierung verwendet.This class represents the gzip data format, which uses an industry-standard algorithm for lossless file compression and decompression. Das Format enthält einen zyklischen Wert zur Redundanz Überprüfung zum Erkennen von Daten Beschädigungen.The format includes a cyclic redundancy check value for detecting data corruption. Das GZIP-Datenformat verwendet den gleichen Algorithmus wie DeflateStream die-Klasse, kann jedoch für die Verwendung anderer Komprimierungs Formate erweitert werden.The gzip data format uses the same algorithm as the DeflateStream class, but can be extended to use other compression formats. Das Format kann problemlos auf eine Weise implementiert werden, die nicht von Patenten abgedeckt wird.The format can be readily implemented in a manner not covered by patents.

Ab verwendet die DeflateStream -Klasse die zlib-Bibliothek für die Komprimierung. .NET Framework 4.5.NET Framework 4.5Starting with the .NET Framework 4.5.NET Framework 4.5, the DeflateStream class uses the zlib library for compression. Folglich bietet Sie einen besseren Komprimierungs Algorithmus und in den meisten Fällen eine kleinere komprimierte Datei, als Sie in früheren Versionen der .NET Framework bereitstellt.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.

Komprimierte GZipStream Objekte, die in eine Datei mit der Erweiterung. gz geschrieben wurden, können mit vielen gängigen Komprimierungs Tools dekomprimiert werden. diese Klasse stellt jedoch nicht grundsätzlich Funktionen zum Hinzufügen von Dateien oder Extrahieren von Dateien aus ZIP-Archiven bereit.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.

Die Komprimierungs Funktionalität DeflateStream in GZipStream und wird als Stream verfügbar gemacht.The compression functionality in DeflateStream and GZipStream is exposed as a stream. Daten werden Byte Weise gelesen, sodass es nicht möglich ist, mehrere Durchgänge auszuführen, um die beste Methode zum Komprimieren ganzer Dateien oder großer Datenblöcke zu ermitteln.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. Die DeflateStream Klassen GZipStream und werden am besten für nicht komprimierte Datenquellen verwendet.The DeflateStream and GZipStream classes are best used on uncompressed sources of data. Wenn die Quelldaten bereits komprimiert sind, kann die Verwendung dieser Klassen die Größe des Streams tatsächlich erhöhen.If the source data is already compressed, using these classes may actually increase the size of the stream.

Hinweise für Vererber

GZipStreamWenn Sie von erben, müssen Sie die folgenden Member überschreiben CanSeek: CanWrite, und CanRead.When you inherit from GZipStream, you must override the following members: CanSeek, CanWrite, and CanRead.

Konstruktoren

GZipStream(Stream, CompressionLevel)

Initialisiert eine neue Instanz der GZipStream-Klasse mithilfe des angegebenen Stream- und Komprimierungsgrads.Initializes a new instance of the GZipStream class by using the specified stream and compression level.

GZipStream(Stream, CompressionLevel, Boolean)

Initialisiert eine neue Instanz der GZipStream-Klasse unter Verwendung des angegebenen Streams und der Komprimierungsebene und lässt den Stream optional geöffnet.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)

Initialisiert eine neue Instanz der GZipStream-Klasse mithilfe des angegebenen Stream- und Komprimierungsmodus.Initializes a new instance of the GZipStream class by using the specified stream and compression mode.

GZipStream(Stream, CompressionMode, Boolean)

Initialisiert eine neue Instanz der GZipStream-Klasse unter Verwendung des angegebenen Streams und des Komprimierungsmodus und lässt den Stream optional geöffnet.Initializes a new instance of the GZipStream class by using the specified stream and compression mode, and optionally leaves the stream open.

Eigenschaften

BaseStream

Ruft einen Verweis auf den zugrunde liegenden Stream ab.Gets a reference to the underlying stream.

CanRead

Ruft einen Wert ab, der angibt, ob der Stream Lesevorgänge unterstützt, während eine Datei dekomprimiert wird.Gets a value indicating whether the stream supports reading while decompressing a file.

CanSeek

Ruft einen Wert, der angibt, ob der Stream Suchvorgänge unterstützt.Gets a value indicating whether the stream supports seeking.

CanTimeout

Ruft einen Wert ab, der bestimmt, ob für den aktuellen Stream ein Timeout möglich ist.Gets a value that determines whether the current stream can time out.

(Geerbt von Stream)
CanWrite

Ruft einen Wert, der angibt, ob der Stream Schreibvorgänge unterstützt.Gets a value indicating whether the stream supports writing.

Length

Diese Eigenschaft wird nicht unterstützt und löst immer eine NotSupportedException aus.This property is not supported and always throws a NotSupportedException.

Position

Diese Eigenschaft wird nicht unterstützt und löst immer eine NotSupportedException aus.This property is not supported and always throws a NotSupportedException.

ReadTimeout

Ruft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Lesevorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Geerbt von Stream)
WriteTimeout

Ruft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Schreibvorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Geerbt von Stream)

Methoden

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

Beginnt einen asynchronen Lesevorgang.Begins an asynchronous read operation. (Verwenden Sie stattdessen die ReadAsync(Byte[], Int32, Int32)-Methode.)(Consider using the ReadAsync(Byte[], Int32, Int32) method instead.)

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

Beginnt einen asynchronen Schreibvorgang.Begins an asynchronous write operation. (Verwenden Sie stattdessen die WriteAsync(Byte[], Int32, Int32)-Methode.)(Consider using the WriteAsync(Byte[], Int32, Int32) method instead.)

Close()

Schließt den aktuellen Stream und gibt alle dem aktuellen Stream zugeordneten Ressourcen frei (z. B. Sockets und Dateihandles).Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. Anstatt diese Methode aufzurufen, stellen Sie sicher, dass der Stream ordnungsgemäß freigegeben wird.Instead of calling this method, ensure that the stream is properly disposed.

(Geerbt von Stream)
CopyTo(Stream)

Liest alle Bytes aus dem aktuellen Stream und schreibt sie in einen anderen Datenstrom.Reads the bytes from the current stream and writes them to another stream.

(Geerbt von Stream)
CopyTo(Stream, Int32)

Liest alles Bytes aus dem aktuellen GZip-Datenstrom und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Datenstrom.Reads the bytes from the current GZip stream and writes them to another stream, using a specified buffer size.

CopyToAsync(Stream)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie in einen anderen Stream.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Geerbt von Stream)
CopyToAsync(Stream, CancellationToken)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung eines angegebenen Abbruchtokens in einen anderen Stream.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Geerbt von Stream)
CopyToAsync(Stream, Int32)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Stream.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Geerbt von Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Liest die Bytes asynchron aus dem aktuellen GZip-Datenstrom und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Datenstrom.Asynchronously reads the bytes from the current GZip stream and writes them to another stream, using a specified buffer size.

CreateObjRef(Type)

Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Geerbt von MarshalByRefObject)
CreateWaitHandle()

Reserviert ein WaitHandle-Objekt.Allocates a WaitHandle object.

(Geerbt von Stream)
Dispose()

Gibt alle vom Stream verwendeten Ressourcen frei.Releases all resources used by the Stream.

(Geerbt von Stream)
Dispose(Boolean)

Gibt die von GZipStream verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei.Releases the unmanaged resources used by the GZipStream and optionally releases the managed resources.

DisposeAsync()

Gibt die nicht verwalteten Ressourcen, die von der GZipStream verwendet werden, asynchron frei.Asynchronously releases the unmanaged resources used by the GZipStream.

EndRead(IAsyncResult)

Wartet, bis der ausstehende asynchrone Lesevorgang abgeschlossen ist.Waits for the pending asynchronous read to complete. (Verwenden Sie stattdessen die ReadAsync(Byte[], Int32, Int32)-Methode.)(Consider using the ReadAsync(Byte[], Int32, Int32) method instead.)

EndWrite(IAsyncResult)

Behandelt das Ende eines asynchronen Schreibvorgangs.Handles the end of an asynchronous write operation. (Verwenden Sie stattdessen die WriteAsync(Byte[], Int32, Int32)-Methode.)(Consider using the WriteAsync(Byte[], Int32, Int32) method instead.)

Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
Flush()

Die aktuelle Implementierung dieser Methode hat keine Funktion.The current implementation of this method has no functionality.

FlushAsync()

Löscht sämtliche Puffer für diesen Stream asynchron und veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Geerbt von Stream)
FlushAsync(CancellationToken)

Löscht alle Puffer für diesen GZip-Datenstrom asynchron und veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät und überwacht Abbruchanforderungen.Asynchronously clears all buffers for this GZip stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests.

GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Geerbt von Object)
GetLifetimeService()

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Geerbt von MarshalByRefObject)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
InitializeLifetimeService()

Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab.Obtains a lifetime service object to control the lifetime policy for this instance.

(Geerbt von MarshalByRefObject)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts.Creates a shallow copy of the current MarshalByRefObject object.

(Geerbt von MarshalByRefObject)
ObjectInvariant()

Bietet Unterstützung für einen Contract.Provides support for a Contract.

(Geerbt von Stream)
Read(Byte[], Int32, Int32)

Liest eine Anzahl von dekomprimierten Bytes in das angegebene Bytearray.Reads a number of decompressed bytes into the specified byte array.

Read(Span<Byte>)

Liest eine Bytesequenz aus dem aktuellen GZip-Datenstrom in eine Bytespanne und erhöht die Position innerhalb des GZip-Datenstroms um die Anzahl der gelesen Bytes.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)

Liest eine Bytesequenz asynchron aus dem aktuellen Stream und setzt die Position in diesem Stream um die Anzahl der gelesenen Bytes nach vorn.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Geerbt von Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Liest eine Bytesequenz asynchron aus dem aktuellen GZip-Datenstrom in ein Bytearray, erhöht die Position im GZip-Datenstrom um die Anzahl der gelesenen Bytes und überwacht Abbruchsanforderungen.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)

Liest eine Bytesequenz asynchron aus dem aktuellen GZip-Datenstrom in einen Bytebereich, erhöht die Position im GZip-Datenstrom um die Anzahl der gelesenen Bytes und überwacht Abbruchsanforderungen.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()

Liest ein Byte aus dem GZip-Datenstrom und erhöht die Position im Datenstrom um ein Byte, oder gibt „-1“ zurück, wenn das Ende des GZip-Datenstroms erreicht ist.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)

Diese Eigenschaft wird nicht unterstützt und löst immer eine NotSupportedException aus.This property is not supported and always throws a NotSupportedException.

SetLength(Int64)

Diese Eigenschaft wird nicht unterstützt und löst immer eine NotSupportedException aus.This property is not supported and always throws a NotSupportedException.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)
Write(Byte[], Int32, Int32)

Schreibt komprimierte Bytes aus dem angegebenen Bytearray in den zugrunde liegenden GZip-Datenstrom.Writes compressed bytes to the underlying GZip stream from the specified byte array.

Write(ReadOnlySpan<Byte>)

Schreibt eine Bytesequenz aus einer schreibgeschützten Bytespanne in den aktuellen GZip-Datenstrom und erhöht die aktuelle Position in diesem GZip-Datenstrom um die Anzahl der geschriebenen Bytes.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)

Schreibt eine Bytesequenz asynchron in den aktuellen Stream und setzt die aktuelle Position in diesem Stream um die Anzahl der geschriebenen Bytes nach vorn.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Geerbt von Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Schreibt komprimierte Bytes aus dem angegebenen Bytearray asynchron in den zugrunde liegenden GZip-Datenstrom.Asynchronously writes compressed bytes to the underlying GZip stream from the specified byte array.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Schreibt komprimierte Bytes aus dem angegebenen schreibgeschützten Bytespeicherbereich asynchron in den zugrunde liegenden GZip-Datenstrom.Asynchronously writes compressed bytes to the underlying GZip stream from the specified read-only byte memory region.

WriteByte(Byte)

Schreibt ein Byte an die aktuellen Position im Stream und erhöht die aktuelle Position im Stream um ein Byte.Writes a byte to the current position in the stream and advances the position within the stream by one byte.

(Geerbt von Stream)

Explizite Schnittstellenimplementierungen

IDisposable.Dispose()

Gibt alle vom Stream verwendeten Ressourcen frei.Releases all resources used by the Stream.

(Geerbt von Stream)

Erweiterungsmethoden

AsInputStream(Stream)

Konvertiert einen verwalteten Stream in .NET für Microsoft Store-Apps in einen Eingabestream in der Windows-Runtime.Converts a managed stream in the .NET for Windows Store apps to an input stream in the Windows Runtime.

AsOutputStream(Stream)

Konvertiert einen verwalteten Stream in .NET für Microsoft Store-Apps in einen Ausgabestream in der Windows-Runtime.Converts a managed stream in the .NET for Windows Store apps to an output stream in the Windows Runtime.

AsRandomAccessStream(Stream)

Konvertiert den angegebenen Stream in einen Random-Access-Stream.Converts the specified stream to a random access stream.

Gilt für: