DeflateStream.Read Metodo

Definizione

Overload

Read(Span<Byte>)

Legge una sequenza di byte dal flusso Deflate corrente in un intervallo di byte e fa avanzare la posizione all'interno del flusso Deflate in base al numero di byte letti.Reads a sequence of bytes from the current Deflate stream into a byte span and advances the position within the Deflate stream by the number of bytes read.

Read(Byte[], Int32, Int32)

Legge un numero di byte decompressi nella matrice di byte specificata.Reads a number of decompressed bytes into the specified byte array.

Read(Span<Byte>)

Legge una sequenza di byte dal flusso Deflate corrente in un intervallo di byte e fa avanzare la posizione all'interno del flusso Deflate in base al numero di byte letti.Reads a sequence of bytes from the current Deflate stream into a byte span and advances the position within the Deflate stream by the number of bytes read.

public:
 override int Read(Span<System::Byte> buffer);
public override int Read (Span<byte> buffer);
override this.Read : Span<byte> -> int
Public Overrides Function Read (buffer As Span(Of Byte)) As Integer

Parametri

buffer
Span<Byte>

Un'area di memoria.A region of memory. Quando questo metodo termina, il contenuto di quest'area viene sostituito dai byte letti dall'origine corrente.When this method returns, the contents of this region are replaced by the bytes read from the current source.

Restituisce

Int32

Numero complessivo di byte letti nel buffer.The total number of bytes read into the buffer. È possibile che questo numero sia inferiore a quello dei byte allocati nel buffer se la quantità di byte disponibili è minore oppure che corrisponda a zero (0) se è stata raggiunta la fine del flusso.This can be less than the number of bytes allocated in the buffer if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.

Commenti

Utilizzare la CanRead proprietà per determinare se l'istanza corrente supporta la lettura.Use the CanRead property to determine whether the current instance supports reading. Usare il ReadAsync metodo per leggere in modo asincrono dal flusso corrente.Use the ReadAsync method to read asynchronously from the current stream.

Questo metodo legge un massimo di buffer.Length byte dal flusso corrente e li archivia in buffer .This method read a maximum of buffer.Length bytes from the current stream and store them in buffer. La posizione corrente all'interno del flusso Deflate è avanzata dal numero di byte letti; Tuttavia, se si verifica un'eccezione, la posizione corrente all'interno del flusso deflate rimane invariata.The current position within the Deflate stream is advanced by the number of bytes read; however, if an exception occurs, the current position within the Deflate stream remains unchanged. Questo metodo si bloccherà fino a quando non sarà possibile leggere almeno un byte di dati, nel caso in cui non siano disponibili dati.This method will block until at least one byte of data can be read, in the event that no data is available. Read restituisce 0 solo quando non sono presenti altri dati nel flusso e non è previsto altro, ad esempio un socket chiuso o una fine del file.Read returns 0 only when there is no more data in the stream and no more is expected (such as a closed socket or end of file). Il metodo può restituire un numero di byte inferiore a quello richiesto anche se non è stata raggiunta la fine del flusso.The method is free to return fewer bytes than requested even if the end of the stream has not been reached.

Utilizzare BinaryReader per la lettura di tipi di dati primitivi.Use BinaryReader for reading primitive data types.

Si applica a

Read(Byte[], Int32, Int32)

Legge un numero di byte decompressi nella matrice di byte specificata.Reads a number of decompressed bytes into the specified byte array.

public:
 override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public override int Read (byte[] array, int offset, int count);
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer

Parametri

array
Byte[]

Matrice per archiviare i byte decompressi.The array to store decompressed bytes.

offset
Int32

Offset dei byte in array in corrispondenza del quale cui verranno inseriti i byte letti.The byte offset in array at which the read bytes will be placed.

count
Int32

Numero massimo di byte decompressi da leggere.The maximum number of decompressed bytes to read.

Restituisce

Int32

Numero di byte letti nella matrice di byte.The number of bytes that were read into the byte array.

Eccezioni

array è null.array is null.

Al momento della creazione dell'oggetto, il valore di CompressionMode era Compress.The CompressionMode value was Compress when the object was created.

-oppure--or- Il flusso sottostante non supporta la lettura.The underlying stream does not support reading.

offset o count è minore di zero.offset or count is less than zero.

-oppure--or- La lunghezza di array meno il punto iniziale dell'indice è minore di count.array length minus the index starting point is less than count.

Il formato dei dati non è valido.The data is in an invalid format.

Il flusso è chiuso.The stream is closed.

Esempio

Nell'esempio seguente viene illustrato come comprimere e decomprimere byte utilizzando i Read Write metodi e.The following example shows how to compress and decompress bytes by using the Read and Write methods.

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

namespace ExampleConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            UnicodeEncoding uniEncode = new UnicodeEncoding();

            byte[] bytesToCompress = uniEncode.GetBytes("example text to compress and decompress");
            Console.WriteLine("starting with: " + uniEncode.GetString(bytesToCompress));

            using (FileStream fileToCompress = File.Create("examplefile.gz"))
            {
                using (DeflateStream compressionStream = new DeflateStream(fileToCompress, CompressionMode.Compress))
                {
                    compressionStream.Write(bytesToCompress, 0, bytesToCompress.Length);
                }
            }

            byte[] decompressedBytes = new byte[bytesToCompress.Length];
            using (FileStream fileToDecompress = File.Open("examplefile.gz", FileMode.Open))
            {
                using (DeflateStream decompressionStream = new DeflateStream(fileToDecompress, CompressionMode.Decompress))
                {
                    decompressionStream.Read(decompressedBytes, 0, bytesToCompress.Length);
                }
            }

            Console.WriteLine("ending with: " + uniEncode.GetString(decompressedBytes));
        }
    }
}
Imports System.IO
Imports System.IO.Compression
Imports System.Text

Module Module1

    Sub Main()
        Dim uniEncode As UnicodeEncoding = New UnicodeEncoding()

        Dim bytesToCompress = uniEncode.GetBytes("example text to compress and decompress")
        Console.WriteLine("starting with: " + uniEncode.GetString(bytesToCompress))

        Using fileToCompress As FileStream = File.Create("examplefile.gz")
            Using compressionStream As DeflateStream = New DeflateStream(fileToCompress, CompressionMode.Compress)
                compressionStream.Write(bytesToCompress, 0, bytesToCompress.Length)
            End Using
        End Using

        Dim decompressedBytes(bytesToCompress.Length - 1) As Byte
        Using fileToDecompress As FileStream = File.Open("examplefile.gz", FileMode.Open)
            Using decompressionStream As DeflateStream = New DeflateStream(fileToDecompress, CompressionMode.Decompress)
                decompressionStream.Read(decompressedBytes, 0, bytesToCompress.Length)
            End Using
        End Using

        Console.WriteLine("ending with: " + uniEncode.GetString(decompressedBytes))
    End Sub
End Module

Si applica a