DeflateStream.Read Método

Definición

Sobrecargas

Read(Span<Byte>)

Lee una secuencia de bytes de la secuencia Deflate actual en un intervalo de bytes y avanza la posición dentro de la secuencia Deflate según el número de bytes leídos.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)

Introduce varios bytes descomprimidos leídos en la matriz de bytes especificada.Reads a number of decompressed bytes into the specified byte array.

Read(Span<Byte>)

Lee una secuencia de bytes de la secuencia Deflate actual en un intervalo de bytes y avanza la posición dentro de la secuencia Deflate según el número de bytes leídos.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

Parámetros

buffer
Span<Byte>

Región de memoria.A region of memory. Cuando este método finaliza, el contenido de esta región se reemplaza por los bytes leídos del origen actual.When this method returns, the contents of this region are replaced by the bytes read from the current source.

Devoluciones

Int32

El número total de bytes que se leen en el búfer.The total number of bytes read into the buffer. Puede ser menor que el número de bytes asignado en el búfer si esos bytes no están disponibles en ese momento o cero (0) si se ha alcanzado el final de la secuencia.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.

Comentarios

Use la propiedad CanRead para determinar si la instancia actual admite lectura.Use the CanRead property to determine whether the current instance supports reading. Use el método ReadAsync para leer de forma asincrónica desde la secuencia actual.Use the ReadAsync method to read asynchronously from the current stream.

Este método lee un máximo de buffer.Length bytes de la secuencia actual y los almacena en buffer.This method read a maximum of buffer.Length bytes from the current stream and store them in buffer. La posición actual dentro de la secuencia DEFLATE se avanza por el número de bytes leídos; sin embargo, si se produce una excepción, la posición actual dentro del flujo DEFLATE permanece sin cambios.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. Este método se bloqueará hasta que se pueda leer al menos un byte de datos, en caso de que no haya datos disponibles.This method will block until at least one byte of data can be read, in the event that no data is available. Read devuelve 0 solo cuando no hay más datos en la secuencia y no se espera más (por ejemplo, un socket cerrado o el final del archivo).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). El método es libre para devolver menos bytes de los solicitados, incluso si no se ha alcanzado el final de la secuencia.The method is free to return fewer bytes than requested even if the end of the stream has not been reached.

Utilice BinaryReader para leer los tipos de datos primitivos.Use BinaryReader for reading primitive data types.

Read(Byte[], Int32, Int32)

Introduce varios bytes descomprimidos leídos en la matriz de bytes especificada.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

Parámetros

array
Byte[]

Matriz para almacenar los bytes descomprimidos.The array to store decompressed bytes.

offset
Int32

Desplazamiento de bytes en array donde se colocarán los bytes leídos.The byte offset in array at which the read bytes will be placed.

count
Int32

Número máximo de bytes descomprimidos que se van a leer.The maximum number of decompressed bytes to read.

Devoluciones

Int32

Número de bytes leídos de la matriz de bytes.The number of bytes that were read into the byte array.

Excepciones

array es null.array is null.

El valor de CompressionMode era Compress cuando se creó el objeto.The CompressionMode value was Compress when the object was created.

O bien-or- La secuencia subyacente no admite operaciones de lectura.The underlying stream does not support reading.

offset o count es menor que cero.offset or count is less than zero.

O bien-or- La longitud de array menos el punto inicial del índice es menor que el valor de count.array length minus the index starting point is less than count.

El formato de los datos no es válido.The data is in an invalid format.

La secuencia está cerrada.The stream is closed.

Ejemplos

En el ejemplo siguiente se muestra cómo comprimir y descomprimir bytes mediante los métodos Read y Write.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

Se aplica a