Auf Englisch lesen

Freigeben über


DeflateStream.Write Methode

Definition

Überlädt

Write(ReadOnlySpan<Byte>)

Schreibt eine Bytesequenz in den aktuellen Deflate-Datenstrom und setzt die aktuelle Position in diesem Deflate-Datenstrom um die Anzahl der geschriebenen Bytes nach vorn.

Write(Byte[], Int32, Int32)

Schreibt komprimierte Bytes aus dem angegebenen Bytearray in den zugrunde liegenden Stream.

Write(ReadOnlySpan<Byte>)

Quelle:
DeflateStream.cs
Quelle:
DeflateStream.cs
Quelle:
DeflateStream.cs

Schreibt eine Bytesequenz in den aktuellen Deflate-Datenstrom und setzt die aktuelle Position in diesem Deflate-Datenstrom um die Anzahl der geschriebenen Bytes nach vorn.

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

Parameter

buffer
ReadOnlySpan<Byte>

Ein Bereich im Arbeitsspeicher. Diese Methode kopiert den Inhalt dieses Bereichs in den aktuellen Deflate-Datenstrom.

Hinweise

Verwenden Sie die CanWrite -Eigenschaft, um zu bestimmen, ob die aktuelle instance das Schreiben unterstützt. Verwenden Sie die WriteAsync -Methode, um asynchron in den aktuellen Stream zu schreiben.

Wenn der Schreibvorgang erfolgreich ist, wird die Position im Deflate-Stream um die Anzahl der geschriebenen Bytes erweitert. Wenn eine Ausnahme auftritt, bleibt die Position im Deflate-Stream unverändert.

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

Write(Byte[], Int32, Int32)

Quelle:
DeflateStream.cs
Quelle:
DeflateStream.cs
Quelle:
DeflateStream.cs

Schreibt komprimierte Bytes aus dem angegebenen Bytearray in den zugrunde liegenden Stream.

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

Parameter

arraybuffer
Byte[]

Der Puffer, der die zu komprimierenden Daten enthält.

offset
Int32

Der Byteoffset, aus dem die Bytes gelesen werden.

count
Int32

Die maximale Anzahl der zu schreibenden Bytes.

Hinweise

Das folgende Beispiel zeigt, wie Bytes mithilfe der Read Methoden und Write komprimiert und dekomprimiert werden.

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

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.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