DeflateStream.Write Méthode

Définition

Surcharges

Write(ReadOnlySpan<Byte>)

Écrit une séquence d’octets dans le flux Deflate actuel et avance la position actuelle dans ce flux Deflate du nombre d’octets écrits.

Write(Byte[], Int32, Int32)

Écrit les octets compressés dans le flux sous-jacent à partir du tableau d'octets spécifié.

Write(ReadOnlySpan<Byte>)

Source:
DeflateStream.cs
Source:
DeflateStream.cs
Source:
DeflateStream.cs

Écrit une séquence d’octets dans le flux Deflate actuel et avance la position actuelle dans ce flux Deflate du nombre d’octets écrits.

C#
public override void Write (ReadOnlySpan<byte> buffer);

Paramètres

buffer
ReadOnlySpan<Byte>

Région de la mémoire. Cette méthode copie le contenu de cette région dans le flux Deflate actuel.

Remarques

Utilisez la CanWrite propriété pour déterminer si le instance actuel prend en charge l’écriture. Utilisez la WriteAsync méthode pour écrire de manière asynchrone dans le flux actuel.

Si l’opération d’écriture réussit, la position dans le flux Deflate avance du nombre d’octets écrits. Si une exception se produit, la position dans le flux Deflate reste inchangée.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

Write(Byte[], Int32, Int32)

Source:
DeflateStream.cs
Source:
DeflateStream.cs
Source:
DeflateStream.cs

Écrit les octets compressés dans le flux sous-jacent à partir du tableau d'octets spécifié.

C#
public override void Write (byte[] array, int offset, int count);
C#
public override void Write (byte[] buffer, int offset, int count);

Paramètres

arraybuffer
Byte[]

Mémoire tampon qui contient les données à compresser.

offset
Int32

Décalage d’octets à partir duquel les octets seront lus.

count
Int32

Nombre maximal d'octets à écrire.

Remarques

L’exemple suivant montre comment compresser et décompresser des octets à l’aide des Read méthodes et Write .

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 265 bytes.
            The decompressed string length is 445 bytes, same as the original length.
        */
    }

    private static void CompressBytesToStream(Stream stream)
    {
        using var compressor = new DeflateStream(stream, CompressionMode.Compress, 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 deflateStream = new DeflateStream(stream, CompressionMode.Decompress);

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

        return totalRead;
    }
}

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