BufferedStream.Read BufferedStream.Read BufferedStream.Read BufferedStream.Read Method

Определение

Перегрузки

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>)

Копирует байты из текущего буферизованного потока в диапазон байтов и перемещает позицию в буферизованном потоке вперед на количество прочитанных байтов.Copies bytes from the current buffered stream to a byte span and advances the position within the buffered stream by the number of bytes read.

Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32)

Копирует байты из текущего буферизованного потока в массив.Copies bytes from the current buffered stream to an array.

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>)

Копирует байты из текущего буферизованного потока в диапазон байтов и перемещает позицию в буферизованном потоке вперед на количество прочитанных байтов.Copies bytes from the current buffered stream to a byte span and advances the position within the buffered stream by the number of bytes read.

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

Параметры

destination
Span<Byte>

Область памяти.A region of memory. При возвращении данного метода содержимое этой области заменяется байтами, считанными из текущего источника.When this method returns, the contents of this region are replaced by the bytes read from the current source.

Возвраты

Общее количество байтов, считанных в буфер.The total number of bytes read into the buffer. Это число может быть меньше количества выделенных в буфере байтов, если столько байтов в настоящее время недоступно, а также равняться нулю (0), если был достигнут конец потока.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.

Комментарии

Используйте свойство CanRead , чтобы определить, поддерживает ли текущий экземпляр чтение.Use the CanRead property to determine whether the current instance supports reading. ReadAsync Используйте метод для асинхронного чтения из текущего потока.Use the ReadAsync method to read asynchronously from the current stream.

Реализации этого метода считывают максимум buffer.Length байт из текущего потока и сохраняют их в. bufferImplementations of this method read a maximum of buffer.Length bytes from the current stream and store them in buffer. Текущая координата в потоке увеличивается на число считанных байтов; Однако при возникновении исключения текущее место в потоке остается неизменным.The current position within the stream is advanced by the number of bytes read; however, if an exception occurs, the current position within the stream remains unchanged. Реализации возвращают число считанных байтов.Implementations return the number of bytes read. Реализация будет заблокирована до тех пор, пока не будет прочитан хотя бы один байт данных в случае, если данные недоступны.The implementation will block until at least one byte of data can be read, in the event that no data is available. ReadВозвращает 0 только в том случае, если в потоке больше нет данных и больше не ожидается (например, закрытый сокет или конец файла).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). Реализация может возвращать меньше байтов, чем было запрошено, даже если конец потока не был достигнут.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Используется BinaryReader для чтения примитивных типов данных.Use BinaryReader for reading primitive data types.

Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32)

Копирует байты из текущего буферизованного потока в массив.Copies bytes from the current buffered stream to an 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

Параметры

array
Byte[]

Буфер, в который необходимо скопировать байты.The buffer to which bytes are to be copied.

offset
Int32 Int32 Int32 Int32

Смещение в буфере (в байтах), с которого начинается чтение байтов.The byte offset in the buffer at which to begin reading bytes.

count
Int32 Int32 Int32 Int32

Количество байтов, чтение которых необходимо выполнить.The number of bytes to be read.

Возвраты

Общее число байтов, считанных в array.The total number of bytes read into array. Это число может быть меньше, чем количество запрошенных байтов, если столько байтов в настоящее время недоступно, или равняться нулю, если конец файла был достигнут раньше, чем были считаны данные.This can be less than the number of bytes requested if that many bytes are not currently available, or 0 if the end of the stream has been reached before any data can be read.

Исключения

Длина array минус offset меньше count.Length of array minus offset is less than count.

Свойство array имеет значение null.array is null.

offset или count является отрицательным значением.offset or count is negative.

Поток не открыт или его значение равно null.The stream is not open or is null.

Поток не поддерживает чтение.The stream does not support reading.

Методы были вызваны после закрытия потока.Methods were called after the stream was closed.

Примеры

Этот пример кода является частью большого примера, BufferedStream приведенного для класса.This code example is part of a larger example provided for the BufferedStream class.

// Receive data using the BufferedStream.
Console::WriteLine(  "Receiving data using BufferedStream." );
bytesReceived = 0;
startTime = DateTime::Now;
while ( bytesReceived < numberOfLoops * receivedData->Length )
{
   bytesReceived += bufStream->Read( receivedData, 0, receivedData->Length );
}

bufferedTime = (DateTime::Now - startTime).TotalSeconds;
Console::WriteLine( "{0} bytes received in {1} seconds.\n", bytesReceived.ToString(), bufferedTime.ToString(  "F1" ) );

// Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.");
bytesReceived = 0;
startTime = DateTime.Now;

int numBytesToRead = receivedData.Length;

while (numBytesToRead > 0)
{
    // Read may return anything from 0 to numBytesToRead.
    int n = bufStream.Read(receivedData,0, receivedData.Length);
    // The end of the file is reached.
    if (n == 0)
        break;
    bytesReceived += n;
    numBytesToRead -= n;
}

bufferedTime = (DateTime.Now - startTime).TotalSeconds;
Console.WriteLine("{0} bytes received in {1} seconds.\n",
    bytesReceived.ToString(),
    bufferedTime.ToString("F1"));
' Receive data using the BufferedStream.
Console.WriteLine("Receiving data using BufferedStream.")
bytesReceived = 0
startTime = DateTime.Now

Dim numBytesToRead As Integer = receivedData.Length
Dim n As Integer
Do While numBytesToRead > 0

    'Read my return anything from 0 to numBytesToRead
    n = bufStream.Read(receivedData, 0, receivedData.Length)
    'The end of the file is reached.
    If n = 0 Then
        Exit Do
    End If

    bytesReceived += n
    numBytesToRead -= n
Loop

bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
Console.WriteLine("{0} bytes received in {1} " & _
    "seconds." & vbCrLf, _
    bytesReceived.ToString(), _
    bufferedTime.ToString("F1"))

Комментарии

Read Метод возвратит 0, только если достигнут конец потока.The Read method will return 0 only if the end of the stream is reached. Во всех остальных случаях Read всегда считывает по крайней мере один байт из потока перед возвратом.In all other cases, Read always reads at least one byte from the stream before returning. По определению, если при вызове Readиз потока данные недоступны Read , метод возвращает 0 (конец потока достигается автоматически).By definition, if no data is available from the stream upon a call to Read, the Read method returns 0 (the end of the stream is reached automatically). Реализация может возвращать меньше байтов, чем было запрошено, даже если конец потока не был достигнут.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Используется BinaryReader для чтения примитивных типов данных.Use BinaryReader for reading primitive data types.

Дополнительно

Применяется к