Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase GZipStream

 

Publicado: octubre de 2016

Proporciona los métodos y propiedades que permiten comprimir y descomprimir secuencias.

Espacio de nombres:   System.IO.Compression
Ensamblado:  System (en System.dll)

System.Object
  System.MarshalByRefObject
    System.IO.Stream
      System.IO.Compression.GZipStream

public class GZipStream : Stream

NombreDescripción
System_CAPS_pubmethodGZipStream(Stream, CompressionLevel)

Inicializa una nueva instancia de la clase GZipStream usando la secuencia y nivel de compresión especificados.

System_CAPS_pubmethodGZipStream(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.

System_CAPS_pubmethodGZipStream(Stream, CompressionMode)

Inicializa una nueva instancia de la clase GZipStream usando la secuencia y modo de compresión especificados.

System_CAPS_pubmethodGZipStream(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.

NombreDescripción
System_CAPS_pubpropertyBaseStream

Obtiene una referencia a la secuencia subyacente.

System_CAPS_pubpropertyCanRead

Obtiene un valor que indica si la secuencia admite operaciones de lectura mientras se descomprime un archivo.(Invalida Stream.CanRead).

System_CAPS_pubpropertyCanSeek

Obtiene un valor que indica si la secuencia admite operaciones de búsqueda.(Invalida Stream.CanSeek).

System_CAPS_pubpropertyCanTimeout

Obtiene un valor que determina si se puede agotar el tiempo de espera de la secuencia actual.(Heredado de Stream).

System_CAPS_pubpropertyCanWrite

Obtiene un valor que indica si la secuencia admite operaciones de escritura.(Invalida Stream.CanWrite).

System_CAPS_pubpropertyLength

Esta propiedad no se admite y siempre produce una excepción NotSupportedException.(Invalida Stream.Length).

System_CAPS_pubpropertyPosition

Esta propiedad no se admite y siempre produce una excepción NotSupportedException.(Invalida Stream.Position).

System_CAPS_pubpropertyReadTimeout

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.(Heredado de Stream).

System_CAPS_pubpropertyWriteTimeout

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.(Heredado de Stream).

NombreDescripción
System_CAPS_pubmethodBeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Comienza una operación de lectura asincrónica. (Puede usar el método Stream.ReadAsync en su lugar; vea la sección Comentarios).(Invalida Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)).

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

Comienza una operación de escritura asincrónica. (Puede usar el método Stream.WriteAsync en su lugar; vea la sección Comentarios).(Invalida Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)).

System_CAPS_pubmethodClose()

Cierra la secuencia actual y libera todos los recursos (como sockets e identificadores de archivo) asociados a esta. En lugar de llamar a este método, asegúrese de que la secuencia se desecha correctamente.(Heredado de Stream).

System_CAPS_pubmethodCopyTo(Stream)

Cierra la secuencia actual y libera todos los recursos (tales como sockets y manejadores de archivo)asociados a la secuencia actual. (Heredado de Stream).

System_CAPS_pubmethodCopyTo(Stream, Int32)

En vez de llamar a este método, asegúrese de que la secuencia actual ha sido correctamente liberada. (Heredado de Stream).

System_CAPS_pubmethodCopyToAsync(Stream)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia.(Heredado de Stream).

System_CAPS_pubmethodCopyToAsync(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.(Heredado de Stream).

System_CAPS_pubmethodCopyToAsync(Stream, Int32, CancellationToken)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, utilizando el tamaño de búfer y el token de cancelación especificados.(Heredado de Stream).

System_CAPS_pubmethodCreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar a un proxy que se utiliza para comunicarse con un objeto remoto.(Heredado de MarshalByRefObject).

System_CAPS_protmethodCreateWaitHandle()

Obsoleto. Asigna un objeto WaitHandle.(Heredado de Stream).

System_CAPS_pubmethodDispose()

Libera todos los recursos que usa Stream.(Heredado de Stream).

System_CAPS_protmethodDispose(Boolean)

Libera los recursos no administrados que usa GZipStream y libera los recursos administrados de forma opcional.(Invalida Stream.Dispose(Boolean)).

System_CAPS_pubmethodEndRead(IAsyncResult)

Espera a que se complete la lectura asincrónica que se encuentra pendiente. (Puede usar el método Stream.ReadAsync en su lugar; vea la sección Comentarios).(Invalida Stream.EndRead(IAsyncResult)).

System_CAPS_pubmethodEndWrite(IAsyncResult)

Controla el final de una operación de escritura asincrónica. (Puede usar el método Stream.WriteAsync en su lugar; vea la sección Comentarios).(Invalida Stream.EndWrite(IAsyncResult)).

System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodFlush()

La implementación actual de este método no tiene funcionalidad.(Invalida Stream.Flush()).

System_CAPS_pubmethodFlushAsync()

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.(Heredado de Stream).

System_CAPS_pubmethodFlushAsync(CancellationToken)

Borra asincrónicamente todos los búferes del flujo actual, hace que todos los datos almacenados en el búfer se escriban en el dispositivo subyacente y supervisa las solicitudes de cancelación.(Heredado de Stream).

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.(Heredado de MarshalByRefObject).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodInitializeLifetimeService()

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.(Heredado de MarshalByRefObject).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_protmethodMemberwiseClone(Boolean)

Crea una copia superficial del elemento actual MarshalByRefObject objeto.(Heredado de MarshalByRefObject).

System_CAPS_protmethodObjectInvariant()

Obsoleto. Esta API admite la infraestructura producto y no está diseñada para usarse directamente desde el código. Proporciona compatibilidad con una clase Contract.(Heredado de Stream).

System_CAPS_pubmethodRead(Byte[], Int32, Int32)

Introduce varios bytes descomprimidos leídos en la matriz de bytes especificada.(Invalida Stream.Read(Byte[], Int32, Int32)).

System_CAPS_pubmethodReadAsync(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.(Heredado de Stream).

System_CAPS_pubmethodReadAsync(Byte[], Int32, Int32, CancellationToken)

Lee de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición dentro de la secuencia el número de bytes leídos y controla las solicitudes de cancelación.(Heredado de Stream).

System_CAPS_pubmethodReadByte()

Lee un byte de la secuencia y hace avanzar la posición de la secuencia en un byte, o devuelve -1 si está al final de la secuencia.(Heredado de Stream).

System_CAPS_pubmethodSeek(Int64, SeekOrigin)

Esta propiedad no se admite y siempre produce una excepción NotSupportedException.(Invalida Stream.Seek(Int64, SeekOrigin)).

System_CAPS_pubmethodSetLength(Int64)

Esta propiedad no se admite y siempre produce una excepción NotSupportedException.(Invalida Stream.SetLength(Int64)).

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

System_CAPS_pubmethodWrite(Byte[], Int32, Int32)

Escribe los bytes comprimidos en la secuencia subyacente de la matriz de bytes especificada.(Invalida Stream.Write(Byte[], Int32, Int32)).

System_CAPS_pubmethodWriteAsync(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.(Heredado de Stream).

System_CAPS_pubmethodWriteAsync(Byte[], Int32, Int32, CancellationToken)

Escribe de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición actual dentro de la secuencia el número de bytes escritos y controla las solicitudes de cancelación.(Heredado de Stream).

System_CAPS_pubmethodWriteByte(Byte)

Escribe un byte a la posición actual en la secuencia y avanza la posición de la secuencia en un byte.(Heredado de Stream).

Esta clase representa el formato de datos gzip, que utiliza un algoritmo estándar del sector para archivos sin pérdidas compresión y descompresión. El formato incluye un valor de comprobación de la prueba cíclica de redundancia para detectar daños en los datos. El formato de datos gzip utiliza el mismo algoritmo que la DeflateStream clase, pero se puede extender para utilizar otros formatos de compresión. El formato se puede implementar fácilmente de una manera no protegida por patentes.

A partir de la .NET Framework 4.5, la DeflateStream clase utiliza la biblioteca zlib para la compresión. 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 las versiones anteriores de .NET Framework.

Comprimido GZipStream objetos escritos en un archivo con una extensión .gz se pueden descomprimir usando muchas herramientas de compresión comunes; sin embargo, esta clase no proporciona de forma inherente la funcionalidad para agregar archivos a o extraer archivos de archivos zip.

La funcionalidad de compresión en DeflateStream y GZipStream se expone como una secuencia. 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 o bloques grandes de datos. El DeflateStream y GZipStream clases son útiles en los orígenes de datos sin comprimir. Si los datos de origen ya están comprimidos, uso de estas clases realmente puede aumentar el tamaño de la secuencia.

Notas para desarrolladores de herederos:

Al heredar de GZipStream, debe reemplazar los miembros siguientes: CanSeek, CanWrite, y CanRead.

En el ejemplo siguiente se muestra cómo utilizar el GZipStream clase para comprimir y descomprimir un directorio de archivos.

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

namespace zip
{
    public class Program
    {
        private static string directoryPath = @"c:\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 + "\\" + fileToCompress.Name + ".gz");
                        Console.WriteLine("Compressed {0} from {1} to {2} bytes.",
                        fileToCompress.Name, fileToCompress.Length.ToString(), info.Length.ToString());
                    }

                }
            }
        }

        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: {0}", fileToDecompress.Name);
                    }
                }
            }
        }
    }
}

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 2.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Windows Phone
Disponible desde 8.1

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: