GZipStream GZipStream GZipStream GZipStream Class

Definición

Proporciona métodos y propiedades que se usan para comprimir y descomprimir secuencias mediante el uso de la especificación de formato de datos 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
Herencia

Ejemplos

El ejemplo siguiente muestra cómo usar el GZipStream clase para comprimir y descomprimir un directorio de archivos.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

Comentarios

Esta clase representa el formato de datos gzip, que utiliza un algoritmo estándar del sector para la descompresión y compresión de archivos sin pérdida de datos.This class represents the gzip data format, which uses an industry-standard algorithm for lossless file compression and decompression. El formato incluye un valor de comprobación de la prueba cíclica de redundancia para detectar daños en los datos.The format includes a cyclic redundancy check value for detecting data corruption. El formato de datos gzip utiliza el mismo algoritmo que el DeflateStream clase, pero puede ampliarse para usar otros formatos de compresión.The gzip data format uses the same algorithm as the DeflateStream class, but can be extended to use other compression formats. El formato puede implementarse fácilmente de una manera no cubierta por patentes.The format can be readily implemented in a manner not covered by patents.

A partir de la .NET Framework 4.5.NET Framework 4.5, el DeflateStream clase utiliza la biblioteca zlib para la compresión.Starting with the .NET Framework 4.5.NET Framework 4.5, the DeflateStream class uses the zlib library for compression. Como resultado, proporciona un mejor algoritmo de compresión y, en la mayoría de los casos, un archivo comprimido menor que se proporciona en versiones anteriores de .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.

Comprimido GZipStream objetos escritos en un archivo con una extensión .gz se pueden descomprimir usando muchas herramientas comunes de compresión; sin embargo, esta clase no proporciona funcionalidad para agregar archivos a o extraer archivos zip en archivos.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.

La funcionalidad de compresión en DeflateStream y GZipStream se expone como una secuencia.The compression functionality in DeflateStream and GZipStream is exposed as a stream. Se leen datos en forma de byte a byte, por lo que no es posible realizar varios pasos para determinar el mejor método de compresión de archivos completos o bloques grandes de datos.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. El DeflateStream y GZipStream clases son útiles en los orígenes de datos sin comprimir.The DeflateStream and GZipStream classes are best used on uncompressed sources of data. Si los datos de origen ya está comprimidos, usar estas clases realmente puede aumentar el tamaño de la secuencia.If the source data is already compressed, using these classes may actually increase the size of the stream.

Notas a los desarrolladores de herederos

Al heredar de GZipStream, debe reemplazar los miembros siguientes: CanSeek, CanWrite, y CanRead.When you inherit from GZipStream, you must override the following members: CanSeek, CanWrite, and CanRead.

Constructores

GZipStream(Stream, CompressionLevel) GZipStream(Stream, CompressionLevel) GZipStream(Stream, CompressionLevel) GZipStream(Stream, CompressionLevel)

Inicializa una nueva instancia de la clase GZipStream usando la secuencia y nivel de compresión especificados.Initializes a new instance of the GZipStream class by using the specified stream and compression level.

GZipStream(Stream, CompressionLevel, Boolean) GZipStream(Stream, CompressionLevel, Boolean) GZipStream(Stream, CompressionLevel, Boolean) GZipStream(Stream, CompressionLevel, Boolean)

Inicializa una nueva instancia de la clase GZipStream usando la secuencia y nivel de compresión especificados y, opcionalmente, deja la secuencia abierta.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) GZipStream(Stream, CompressionMode) GZipStream(Stream, CompressionMode) GZipStream(Stream, CompressionMode)

Inicializa una nueva instancia de la clase GZipStream usando la secuencia y modo de compresión especificados.Initializes a new instance of the GZipStream class by using the specified stream and compression mode.

GZipStream(Stream, CompressionMode, Boolean) GZipStream(Stream, CompressionMode, Boolean) GZipStream(Stream, CompressionMode, Boolean) GZipStream(Stream, CompressionMode, Boolean)

Inicializa una nueva instancia de la clase GZipStream usando la secuencia y modo de compresión especificados y, opcionalmente, deja la secuencia abierta.Initializes a new instance of the GZipStream class by using the specified stream and compression mode, and optionally leaves the stream open.

Propiedades

BaseStream BaseStream BaseStream BaseStream

Obtiene una referencia a la secuencia subyacente.Gets a reference to the underlying stream.

CanRead CanRead CanRead CanRead

Obtiene un valor que indica si la secuencia admite operaciones de lectura mientras se descomprime un archivo.Gets a value indicating whether the stream supports reading while decompressing a file.

CanSeek CanSeek CanSeek CanSeek

Obtiene un valor que indica si la secuencia admite operaciones de búsqueda.Gets a value indicating whether the stream supports seeking.

CanTimeout CanTimeout CanTimeout CanTimeout

Obtiene un valor que determina si se puede agotar el tiempo de espera de la secuencia actual.Gets a value that determines whether the current stream can time out.

(Inherited from Stream)
CanWrite CanWrite CanWrite CanWrite

Obtiene un valor que indica si la secuencia admite operaciones de escritura.Gets a value indicating whether the stream supports writing.

Length Length Length Length

Esta propiedad no se admite y siempre produce una excepción NotSupportedException.This property is not supported and always throws a NotSupportedException.

Position Position Position Position

Esta propiedad no se admite y siempre produce una excepción NotSupportedException.This property is not supported and always throws a NotSupportedException.

ReadTimeout ReadTimeout ReadTimeout ReadTimeout

Obtiene o establece un valor, en milisegundos, que determina durante cuánto tiempo la secuencia intentará realizar operaciones de lectura antes de que se agote el tiempo de espera.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Inherited from Stream)
WriteTimeout WriteTimeout WriteTimeout WriteTimeout

Obtiene o establece un valor, en milisegundos, que determina durante cuánto tiempo la secuencia intentará realizar operaciones de escritura antes de que se agote el tiempo de espera.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Inherited from Stream)

Métodos

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

Comienza una operación de lectura asincrónica.Begins an asynchronous read operation. (Considere usar el método ReadAsync(Byte[], Int32, Int32) en su lugar).(Consider using the ReadAsync(Byte[], Int32, Int32) method instead.)

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

Comienza una operación de escritura asincrónica.Begins an asynchronous write operation. (Considere usar el método WriteAsync(Byte[], Int32, Int32) en su lugar).(Consider using the WriteAsync(Byte[], Int32, Int32) method instead.)

Close() Close() Close() Close()

Cierra la secuencia actual y libera todos los recursos (como sockets e identificadores de archivo) asociados a esta.Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. En lugar de llamar a este método, asegúrese de que la secuencia se desecha correctamente.Instead of calling this method, ensure that the stream is properly disposed.

(Inherited from Stream)
CopyTo(Stream) CopyTo(Stream) CopyTo(Stream) CopyTo(Stream)

Lee los bytes de la secuencia actual y los escribe en otra secuencia de destino.Reads the bytes from the current stream and writes them to another stream.

(Inherited from Stream)
CopyTo(Stream, Int32) CopyTo(Stream, Int32) CopyTo(Stream, Int32) CopyTo(Stream, Int32)
CopyToAsync(Stream) CopyToAsync(Stream) CopyToAsync(Stream) CopyToAsync(Stream)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Inherited from Stream)
CopyToAsync(Stream, CancellationToken) CopyToAsync(Stream, CancellationToken) CopyToAsync(Stream, CancellationToken) CopyToAsync(Stream, CancellationToken) Inherited from Stream
CopyToAsync(Stream, Int32) CopyToAsync(Stream, Int32) CopyToAsync(Stream, Int32) CopyToAsync(Stream, Int32)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, usando el tamaño de búfer especificado.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Inherited from Stream)
CopyToAsync(Stream, Int32, CancellationToken) CopyToAsync(Stream, Int32, CancellationToken) CopyToAsync(Stream, Int32, CancellationToken) CopyToAsync(Stream, Int32, CancellationToken)
CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
CreateWaitHandle() CreateWaitHandle() CreateWaitHandle() CreateWaitHandle()

Asigna un objeto WaitHandle.Allocates a WaitHandle object.

(Inherited from Stream)
Dispose() Dispose() Dispose() Dispose()

Libera todos los recursos que usa Stream.Releases all resources used by the Stream.

(Inherited from Stream)
Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

Libera los recursos no administrados que usa GZipStream y, de forma opcional, libera los recursos administrados.Releases the unmanaged resources used by the GZipStream and optionally releases the managed resources.

DisposeAsync() DisposeAsync() DisposeAsync() DisposeAsync()
EndRead(IAsyncResult) EndRead(IAsyncResult) EndRead(IAsyncResult) EndRead(IAsyncResult)

Espera a que se complete la lectura asincrónica que se encuentra pendiente.Waits for the pending asynchronous read to complete. (Considere usar el método ReadAsync(Byte[], Int32, Int32) en su lugar).(Consider using the ReadAsync(Byte[], Int32, Int32) method instead.)

EndWrite(IAsyncResult) EndWrite(IAsyncResult) EndWrite(IAsyncResult) EndWrite(IAsyncResult)

Controla el final de una operación de escritura asincrónica.Handles the end of an asynchronous write operation. (Considere usar el método WriteAsync(Byte[], Int32, Int32) en su lugar).(Consider using the WriteAsync(Byte[], Int32, Int32) method instead.)

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Inherited from Object)
Flush() Flush() Flush() Flush()

La implementación actual de este método no tiene funcionalidad.The current implementation of this method has no functionality.

FlushAsync() FlushAsync() FlushAsync() FlushAsync()

Borra asincrónicamente todos los búferes de esta secuencia y hace que los datos almacenados en búfer se escriban en el dispositivo subyacente.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Inherited from Stream)
FlushAsync(CancellationToken) FlushAsync(CancellationToken) FlushAsync(CancellationToken) FlushAsync(CancellationToken)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Inherited from Object)
GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetType() GetType() GetType() GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Inherited from Object)
InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
ObjectInvariant() ObjectInvariant() ObjectInvariant() ObjectInvariant()

Proporciona compatibilidad con una clase Contract.Provides support for a Contract.

(Inherited from Stream)
Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32)

Introduce varios bytes descomprimidos leídos en la matriz de bytes especificada.Reads a number of decompressed bytes into the specified byte array.

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>)
ReadAsync(Byte[], Int32, Int32) ReadAsync(Byte[], Int32, Int32) ReadAsync(Byte[], Int32, Int32) ReadAsync(Byte[], Int32, Int32)

Lee asincrónicamente una secuencia de bytes de la secuencia actual y avanza la posición en esta secuencia según el número de bytes leídos.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Inherited from Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken) ReadAsync(Byte[], Int32, Int32, CancellationToken) ReadAsync(Byte[], Int32, Int32, CancellationToken) ReadAsync(Byte[], Int32, Int32, CancellationToken)
ReadAsync(Memory<Byte>, CancellationToken) ReadAsync(Memory<Byte>, CancellationToken) ReadAsync(Memory<Byte>, CancellationToken) ReadAsync(Memory<Byte>, CancellationToken)
ReadByte() ReadByte() ReadByte() ReadByte()
Seek(Int64, SeekOrigin) Seek(Int64, SeekOrigin) Seek(Int64, SeekOrigin) Seek(Int64, SeekOrigin)

Esta propiedad no se admite y siempre produce una excepción NotSupportedException.This property is not supported and always throws a NotSupportedException.

SetLength(Int64) SetLength(Int64) SetLength(Int64) SetLength(Int64)

Esta propiedad no se admite y siempre produce una excepción NotSupportedException.This property is not supported and always throws a NotSupportedException.

ToString() ToString() ToString() ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)
Write(Byte[], Int32, Int32) Write(Byte[], Int32, Int32) Write(Byte[], Int32, Int32) Write(Byte[], Int32, Int32)

Escribe los bytes comprimidos en la secuencia subyacente de la matriz de bytes especificada.Writes compressed bytes to the underlying stream from the specified byte array.

Write(ReadOnlySpan<Byte>) Write(ReadOnlySpan<Byte>) Write(ReadOnlySpan<Byte>) Write(ReadOnlySpan<Byte>)
WriteAsync(Byte[], Int32, Int32) WriteAsync(Byte[], Int32, Int32) WriteAsync(Byte[], Int32, Int32) WriteAsync(Byte[], Int32, Int32)

Escribe asincrónicamente una secuencia de bytes en la secuencia actual y avanza la posición actual en esta secuencia según el número de bytes escritos.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Inherited from Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken) WriteAsync(Byte[], Int32, Int32, CancellationToken) WriteAsync(Byte[], Int32, Int32, CancellationToken) WriteAsync(Byte[], Int32, Int32, CancellationToken)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)
WriteByte(Byte) WriteByte(Byte) WriteByte(Byte) WriteByte(Byte)

Escribe un byte a la posición actual en la secuencia y avanza la posición de la secuencia en un byte.Writes a byte to the current position in the stream and advances the position within the stream by one byte.

(Inherited from Stream)

Implementaciones de interfaz explícitas

IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose()

Libera todos los recursos que usa Stream.Releases all resources used by the Stream.

(Inherited from Stream)

Extension Methods

AsInputStream(Stream) AsInputStream(Stream) AsInputStream(Stream) AsInputStream(Stream)

Convierte un flujo administrado de .NET para aplicaciones de Microsoft Store en un flujo de entrada de Windows Runtime.Converts a managed stream in the .NET for Windows Store apps to an input stream in the Windows Runtime.

AsOutputStream(Stream) AsOutputStream(Stream) AsOutputStream(Stream) AsOutputStream(Stream)

Convierte un flujo administrado de .NET para aplicaciones de Microsoft Store en un flujo de salida de Windows Runtime.Converts a managed stream in the .NET for Windows Store apps to an output stream in the Windows Runtime.

AsRandomAccessStream(Stream) AsRandomAccessStream(Stream) AsRandomAccessStream(Stream) AsRandomAccessStream(Stream)

Convierte la secuencia especificada en una secuencia de acceso aleatorio.Converts the specified stream to a random access stream.

Se aplica a