Lire en anglais

Partager via


GZipStream Constructeurs

Définition

Initialise une nouvelle instance de la classe GZipStream.

Surcharges

GZipStream(Stream, CompressionLevel)

Initialise une nouvelle instance de la classe GZipStream à l’aide du flux et du niveau de compression spécifiés.

GZipStream(Stream, CompressionMode)

Initialise une nouvelle instance de la classe GZipStream à l’aide du flux et du mode de compression spécifiés.

GZipStream(Stream, CompressionLevel, Boolean)

Initialise une nouvelle instance de la classe GZipStream à l’aide du flux et du niveau de compression spécifiés, et laisse éventuellement le flux ouvert.

GZipStream(Stream, CompressionMode, Boolean)

Initialise une nouvelle instance de la classe GZipStream à l’aide du flux et du mode de compression spécifiés, et laisse éventuellement le flux ouvert.

GZipStream(Stream, ZLibCompressionOptions, Boolean)

Initialise une nouvelle instance de la classe GZipStream à l’aide du flux, des options de compression spécifiées et laisse éventuellement le flux ouvert.

GZipStream(Stream, CompressionLevel)

Source:
GZipStream.cs
Source:
GZipStream.cs
Source:
GZipStream.cs

Initialise une nouvelle instance de la classe GZipStream à l’aide du flux et du niveau de compression spécifiés.

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

Paramètres

stream
Stream

Flux dans lequel les données compressées sont écrites.

compressionLevel
CompressionLevel

Une des valeurs d’énumération qui indique s’il faut mettre en évidence l’efficacité de la vitesse ou de la compression lors de la compression des données dans le flux.

Exceptions

stream est null.

Le flux ne prend pas en charge les opérations d’écriture telles que la compression. (La propriété CanWrite sur l’objet de flux est false.)

Remarques

Vous utilisez ce constructeur lorsque vous souhaitez spécifier si l’efficacité ou la vitesse de compression est plus importante pour une instance de la classe GZipStream.

Cette surcharge de constructeur utilise le mode de compression Compress. Pour définir le mode de compression sur une autre valeur, utilisez la surcharge GZipStream(Stream, CompressionMode) ou GZipStream(Stream, CompressionMode, Boolean).

S’applique à

.NET 9 et autres versions
Produit Versions
.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)

Source:
GZipStream.cs
Source:
GZipStream.cs
Source:
GZipStream.cs

Initialise une nouvelle instance de la classe GZipStream à l’aide du flux et du mode de compression spécifiés.

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

Paramètres

stream
Stream

Flux vers lequel les données compressées sont écrites ou à partir desquelles les données à décompresser sont lues.

mode
CompressionMode

Une des valeurs d’énumération qui indique s’il faut compresser des données dans le flux ou décompresser des données à partir du flux.

Exceptions

stream est null.

mode n’est pas une valeur d’énumération CompressionMode valide.

-ou-

CompressionMode est Compress et CanWrite est false.

-ou-

CompressionMode est Decompress et CanRead est false.

Exemples

L’exemple suivant montre comment définir le mode de compression lors de la création d’un objet 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);
    }
}

Remarques

Par défaut, GZipStream possède le flux sous-jacent. Par conséquent, la fermeture du paramètre stream ferme également le flux sous-jacent. Notez que l’état du flux sous-jacent peut affecter la facilité d’utilisation du flux. En outre, aucune vérification explicite n’est effectuée. Par conséquent, aucune exception supplémentaire n’est levée lors de la création de la nouvelle instance.

Si une instance de la classe GZipStream est créée avec le paramètre mode égal à Compress et qu’aucune autre action ne se produit, le flux s’affiche sous forme de fichier compressé valide et vide.

Par défaut, le niveau de compression est défini sur Optimal lorsque le mode de compression est Compress.

S’applique à

.NET 9 et autres versions
Produit Versions
.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)

Source:
GZipStream.cs
Source:
GZipStream.cs
Source:
GZipStream.cs

Initialise une nouvelle instance de la classe GZipStream à l’aide du flux et du niveau de compression spécifiés, et laisse éventuellement le flux ouvert.

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

Paramètres

stream
Stream

Flux dans lequel les données compressées sont écrites.

compressionLevel
CompressionLevel

Une des valeurs d’énumération qui indique s’il faut mettre en évidence l’efficacité de la vitesse ou de la compression lors de la compression des données dans le flux.

leaveOpen
Boolean

true de laisser l’objet de flux ouvert après la suppression de l’objet GZipStream ; sinon, false.

Exceptions

stream est null.

Le flux ne prend pas en charge les opérations d’écriture telles que la compression. (La propriété CanWrite sur l’objet de flux est false.)

Exemples

L’exemple suivant montre comment définir le niveau de compression lors de la création d’un objet GZipStream et comment laisser le flux ouvert.

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;
    }
}

Remarques

Vous utilisez ce constructeur lorsque vous souhaitez spécifier si l’efficacité ou la vitesse de compression est plus importante pour une instance de la classe GZipStream, et s’il faut laisser l’objet de flux ouvert après la suppression de l’objet GZipStream.

Cette surcharge de constructeur utilise le mode de compression Compress. Pour définir le mode de compression sur une autre valeur, utilisez la surcharge GZipStream(Stream, CompressionMode) ou GZipStream(Stream, CompressionMode, Boolean).

S’applique à

.NET 9 et autres versions
Produit Versions
.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)

Source:
GZipStream.cs
Source:
GZipStream.cs
Source:
GZipStream.cs

Initialise une nouvelle instance de la classe GZipStream à l’aide du flux et du mode de compression spécifiés, et laisse éventuellement le flux ouvert.

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

Paramètres

stream
Stream

Flux vers lequel les données compressées sont écrites ou à partir desquelles les données à décompresser sont lues.

mode
CompressionMode

Une des valeurs d’énumération qui indique s’il faut compresser des données dans le flux ou décompresser des données à partir du flux.

leaveOpen
Boolean

true de laisser le flux ouvert après la suppression de l’objet GZipStream ; sinon, false.

Exceptions

stream est null.

mode n’est pas une valeur de CompressionMode valide.

-ou-

CompressionMode est Compress et CanWrite est false.

-ou-

CompressionMode est Decompress et CanRead est false.

Remarques

Par défaut, GZipStream possède le flux sous-jacent. Par conséquent, la fermeture du paramètre stream ferme également le flux sous-jacent. L’état du flux sous-jacent peut affecter la facilité d’utilisation du flux. En outre, aucune vérification explicite n’est effectuée. Par conséquent, aucune exception supplémentaire n’est levée lors de la création de la nouvelle instance.

Si une instance de la classe GZipStream est créée avec le paramètre mode égal à Compress et qu’aucune autre action ne se produit, le flux s’affiche sous forme de fichier compressé valide et vide.

Par défaut, le niveau de compression est défini sur Optimal lorsque le mode de compression est Compress.

S’applique à

.NET 9 et autres versions
Produit Versions
.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)

Initialise une nouvelle instance de la classe GZipStream à l’aide du flux, des options de compression spécifiées et laisse éventuellement le flux ouvert.

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

Paramètres

stream
Stream

Flux dans lequel les données compressées sont écrites.

compressionOptions
ZLibCompressionOptions

Options d’optimisation du flux de compression.

leaveOpen
Boolean

true de laisser l’objet de flux ouvert après la suppression de l’objet GZipStream ; sinon, false.

Exceptions

stream ou compressionOptions est null.

S’applique à

.NET 9
Produit Versions
.NET 9