Ler em inglês

Partilhar via


GZipStream Construtores

Definição

Inicializa uma nova instância da classe GZipStream.

Sobrecargas

GZipStream(Stream, CompressionLevel)

Inicializa uma nova instância da classe GZipStream usando o fluxo e o nível de compactação especificados.

GZipStream(Stream, CompressionMode)

Inicializa uma nova instância da classe GZipStream usando o modo de fluxo e compactação especificados.

GZipStream(Stream, CompressionLevel, Boolean)

Inicializa uma nova instância da classe GZipStream usando o fluxo e o nível de compactação especificados e, opcionalmente, deixa o fluxo aberto.

GZipStream(Stream, CompressionMode, Boolean)

Inicializa uma nova instância da classe GZipStream usando o fluxo e o modo de compactação especificados e, opcionalmente, deixa o fluxo aberto.

GZipStream(Stream, ZLibCompressionOptions, Boolean)

Inicializa uma nova instância da classe GZipStream usando o fluxo especificado, as opções de compactação e, opcionalmente, deixa o fluxo aberto.

GZipStream(Stream, CompressionLevel)

Origem:
GZipStream.cs
Origem:
GZipStream.cs
Origem:
GZipStream.cs

Inicializa uma nova instância da classe GZipStream usando o fluxo e o nível de compactação especificados.

C#
public GZipStream (System.IO.Stream stream, System.IO.Compression.CompressionLevel compressionLevel);

Parâmetros

stream
Stream

O fluxo no qual os dados compactados são gravados.

compressionLevel
CompressionLevel

Um dos valores de enumeração que indica se é necessário enfatizar a velocidade ou a eficiência da compactação ao compactar dados para o fluxo.

Exceções

stream é null.

O fluxo não dá suporte a operações de gravação, como compactação. (A propriedade CanWrite no objeto de fluxo é false.)

Comentários

Use esse construtor quando quiser especificar se a eficiência ou a velocidade da compactação são mais importantes para uma instância da classe GZipStream.

Essa sobrecarga do construtor usa o modo de compactação Compress. Para definir o modo de compactação como outro valor, use a sobrecarga GZipStream(Stream, CompressionMode) ou GZipStream(Stream, CompressionMode, Boolean).

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GZipStream(Stream, CompressionMode)

Origem:
GZipStream.cs
Origem:
GZipStream.cs
Origem:
GZipStream.cs

Inicializa uma nova instância da classe GZipStream usando o modo de fluxo e compactação especificados.

C#
public GZipStream (System.IO.Stream stream, System.IO.Compression.CompressionMode mode);

Parâmetros

stream
Stream

O fluxo no qual os dados compactados são gravados ou dos quais os dados a serem descompactados são lidos.

mode
CompressionMode

Um dos valores de enumeração que indica se os dados devem ser compactados no fluxo ou descompactados do fluxo.

Exceções

stream é null.

mode não é um valor de enumeração de CompressionMode válido.

-ou-

CompressionMode é Compress e CanWrite é false.

-ou-

CompressionMode é Decompress e CanRead é false.

Exemplos

O exemplo a seguir mostra como definir o modo de compactação ao criar um objeto GZipStream.

C#
using System;
using System.IO;
using System.IO.Compression;

public class FileCompressionModeExample
{
    private const string Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
    private const string OriginalFileName = "original.txt";
    private const string CompressedFileName = "compressed.gz";
    private const string DecompressedFileName = "decompressed.txt";

    public static void Run()
    {
        CreateFileToCompress();
        CompressFile();
        DecompressFile();
        PrintResults();
        DeleteFiles();

        /*
         Output:

            The original file 'original.txt' is 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

            The compressed file 'compressed.gz' is 283 bytes.

            The decompressed file 'decompressed.txt' is 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
         */
    }

    private static void CreateFileToCompress() => File.WriteAllText(OriginalFileName, Message);

    private static void CompressFile()
    {
        using FileStream originalFileStream = File.Open(OriginalFileName, FileMode.Open);
        using FileStream compressedFileStream = File.Create(CompressedFileName);
        using var compressor = new GZipStream(compressedFileStream, CompressionMode.Compress);
        originalFileStream.CopyTo(compressor);
    }

    private static void DecompressFile()
    {
        using FileStream compressedFileStream = File.Open(CompressedFileName, FileMode.Open);
        using FileStream outputFileStream = File.Create(DecompressedFileName);
        using var decompressor = new GZipStream(compressedFileStream, CompressionMode.Decompress);
        decompressor.CopyTo(outputFileStream);
    }

    private static void PrintResults()
    {
        long originalSize = new FileInfo(OriginalFileName).Length;
        long compressedSize = new FileInfo(CompressedFileName).Length;
        long decompressedSize = new FileInfo(DecompressedFileName).Length;

        Console.WriteLine($"The original file '{OriginalFileName}' is {originalSize} bytes. Contents: \"{File.ReadAllText(OriginalFileName)}\"");
        Console.WriteLine($"The compressed file '{CompressedFileName}' is {compressedSize} bytes.");
        Console.WriteLine($"The decompressed file '{DecompressedFileName}' is {decompressedSize} bytes. Contents: \"{File.ReadAllText(DecompressedFileName)}\"");
    }

    private static void DeleteFiles()
    {
        File.Delete(OriginalFileName);
        File.Delete(CompressedFileName);
        File.Delete(DecompressedFileName);
    }
}

Comentários

Por padrão, GZipStream possui o fluxo subjacente, portanto, fechar o parâmetro stream também fecha o fluxo subjacente. Observe que o estado do fluxo subjacente pode afetar a usabilidade do fluxo. Além disso, nenhuma verificação explícita é executada, portanto, nenhuma exceção adicional é gerada quando a nova instância é criada.

Se uma instância da classe GZipStream for criada com o parâmetro mode igual a Compress e nenhuma ação adicional ocorrer, o fluxo aparecerá como um arquivo compactado válido e vazio.

Por padrão, o nível de compactação é definido como Optimal quando o modo de compactação é Compress.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GZipStream(Stream, CompressionLevel, Boolean)

Origem:
GZipStream.cs
Origem:
GZipStream.cs
Origem:
GZipStream.cs

Inicializa uma nova instância da classe GZipStream usando o fluxo e o nível de compactação especificados e, opcionalmente, deixa o fluxo aberto.

C#
public GZipStream (System.IO.Stream stream, System.IO.Compression.CompressionLevel compressionLevel, bool leaveOpen);

Parâmetros

stream
Stream

O fluxo no qual os dados compactados são gravados.

compressionLevel
CompressionLevel

Um dos valores de enumeração que indica se é necessário enfatizar a velocidade ou a eficiência da compactação ao compactar dados para o fluxo.

leaveOpen
Boolean

true deixar o objeto de fluxo aberto depois de descartar o objeto GZipStream; caso contrário, false.

Exceções

stream é null.

O fluxo não dá suporte a operações de gravação, como compactação. (A propriedade CanWrite no objeto de fluxo é false.)

Exemplos

O exemplo a seguir mostra como definir o nível de compactação ao criar um objeto GZipStream e como deixar o fluxo aberto.

C#
using System;
using System.IO;
using System.IO.Compression;
using System.Text;

public static class MemoryWriteReadExample
{
    private const string Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
    private static readonly byte[] s_messageBytes = Encoding.ASCII.GetBytes(Message);

    public static void Run()
    {
        Console.WriteLine($"The original string length is {s_messageBytes.Length} bytes.");
        using var stream = new MemoryStream();
        CompressBytesToStream(stream);
        Console.WriteLine($"The compressed stream length is {stream.Length} bytes.");
        int decompressedLength = DecompressStreamToBytes(stream);
        Console.WriteLine($"The decompressed string length is {decompressedLength} bytes, same as the original length.");
        /*
         Output:
            The original string length is 445 bytes.
            The compressed stream length is 282 bytes.
            The decompressed string length is 445 bytes, same as the original length.
        */
    }

    private static void CompressBytesToStream(Stream stream)
    {
        using var compressor = new GZipStream(stream, CompressionLevel.SmallestSize, leaveOpen: true);
        compressor.Write(s_messageBytes, 0, s_messageBytes.Length);
    }

    private static int DecompressStreamToBytes(Stream stream)
    {
        stream.Position = 0;
        int bufferSize = 512;
        byte[] buffer = new byte[bufferSize];
        using var gzipStream = new GZipStream(stream, CompressionMode.Decompress);

        int totalRead = 0;
        while (totalRead < buffer.Length)
        {
            int bytesRead = gzipStream.Read(buffer.AsSpan(totalRead));
            if (bytesRead == 0) break;
            totalRead += bytesRead;
        }

        return totalRead;
    }
}

Comentários

Use esse construtor quando quiser especificar se a eficiência ou velocidade da compactação é mais importante para uma instância da classe GZipStream e se deseja deixar o objeto de fluxo aberto após descartar o objeto GZipStream.

Essa sobrecarga do construtor usa o modo de compactação Compress. Para definir o modo de compactação como outro valor, use a sobrecarga GZipStream(Stream, CompressionMode) ou GZipStream(Stream, CompressionMode, Boolean).

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GZipStream(Stream, CompressionMode, Boolean)

Origem:
GZipStream.cs
Origem:
GZipStream.cs
Origem:
GZipStream.cs

Inicializa uma nova instância da classe GZipStream usando o fluxo e o modo de compactação especificados e, opcionalmente, deixa o fluxo aberto.

C#
public GZipStream (System.IO.Stream stream, System.IO.Compression.CompressionMode mode, bool leaveOpen);

Parâmetros

stream
Stream

O fluxo no qual os dados compactados são gravados ou dos quais os dados a serem descompactados são lidos.

mode
CompressionMode

Um dos valores de enumeração que indica se os dados devem ser compactados no fluxo ou descompactados do fluxo.

leaveOpen
Boolean

true deixar o fluxo aberto depois de descartar o objeto GZipStream; caso contrário, false.

Exceções

stream é null.

mode não é um valor de CompressionMode válido.

-ou-

CompressionMode é Compress e CanWrite é false.

-ou-

CompressionMode é Decompress e CanRead é false.

Comentários

Por padrão, GZipStream possui o fluxo subjacente, portanto, fechar o parâmetro stream também fecha o fluxo subjacente. O estado do fluxo subjacente pode afetar a usabilidade do fluxo. Além disso, nenhuma verificação explícita é executada, portanto, nenhuma exceção adicional é gerada quando a nova instância é criada.

Se uma instância da classe GZipStream for criada com o parâmetro mode igual a Compress e nenhuma ação adicional ocorrer, o fluxo aparecerá como um arquivo compactado válido e vazio.

Por padrão, o nível de compactação é definido como Optimal quando o modo de compactação é Compress.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GZipStream(Stream, ZLibCompressionOptions, Boolean)

Inicializa uma nova instância da classe GZipStream usando o fluxo especificado, as opções de compactação e, opcionalmente, deixa o fluxo aberto.

C#
public GZipStream (System.IO.Stream stream, System.IO.Compression.ZLibCompressionOptions compressionOptions, bool leaveOpen = false);

Parâmetros

stream
Stream

O fluxo no qual os dados compactados são gravados.

compressionOptions
ZLibCompressionOptions

As opções para ajustar o fluxo de compactação.

leaveOpen
Boolean

true deixar o objeto de fluxo aberto depois de descartar o objeto GZipStream; caso contrário, false.

Exceções

stream ou compressionOptions é null.

Aplica-se a

.NET 9
Produto Versões
.NET 9