BufferedStream.Read Metoda

Definicja

Przeciążenia

Read(Span<Byte>)

Kopiuje bajty z bieżącego buforowanego strumienia do zakresu bajtów i postępuje zgodnie z pozycją w buforowanym strumieniu przez liczbę odczytanych bajtów.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)

Kopiuje bajty z bieżącego buforowanego strumienia do tablicy.Copies bytes from the current buffered stream to an array.

Read(Span<Byte>)

Kopiuje bajty z bieżącego buforowanego strumienia do zakresu bajtów i postępuje zgodnie z pozycją w buforowanym strumieniu przez liczbę odczytanych bajtów.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

Parametry

destination
Span<Byte>

Region pamięci.A region of memory. Gdy ta metoda zwraca, zawartość tego regionu jest zastępowana przez Bajty odczytane z bieżącego źródła.When this method returns, the contents of this region are replaced by the bytes read from the current source.

Zwraca

Int32

Całkowita liczba bajtów odczytywanych w buforze.The total number of bytes read into the buffer. Wartość ta może być mniejsza niż liczba bajtów przypadających w buforze, jeśli wiele bajtów nie jest obecnie dostępna lub zero (0), jeśli osiągnięto koniec strumienia.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.

Uwagi

Użyj CanRead właściwości, aby określić, czy bieżące wystąpienie obsługuje odczytywanie.Use the CanRead property to determine whether the current instance supports reading. Użyj ReadAsync metody, aby odczytywać asynchronicznie z bieżącego strumienia.Use the ReadAsync method to read asynchronously from the current stream.

Implementacje tej metody odczytują maksymalnie buffer.Length bajtów z bieżącego strumienia i przechowują je w buffer .Implementations of this method read a maximum of buffer.Length bytes from the current stream and store them in buffer. Bieżąca pozycja w strumieniu jest zaawansowana przez liczbę odczytanych bajtów; Jeśli jednak wystąpi wyjątek, bieżąca pozycja w strumieniu pozostaje niezmieniona.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. Implementacje zwracają liczbę odczytanych bajtów.Implementations return the number of bytes read. Implementacja zostanie Zablokowani do momentu odczytania co najmniej jednego bajtu danych, w przypadku, gdy żadne dane nie są dostępne.The implementation will block until at least one byte of data can be read, in the event that no data is available. Read Zwraca wartość 0 tylko wtedy, gdy nie ma więcej danych w strumieniu i nie ma więcej oczekiwanych (takich jak zamknięte gniazdo lub koniec pliku).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). Implementacja może zwrócić mniejszą liczbę bajtów niż żądana, nawet jeśli koniec strumienia nie został osiągnięty.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Służy BinaryReader do odczytywania typów danych pierwotnych.Use BinaryReader for reading primitive data types.

Dotyczy

Read(Byte[], Int32, Int32)

Kopiuje bajty z bieżącego buforowanego strumienia do tablicy.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

Parametry

array
Byte[]

Bufor, do którego mają zostać skopiowane bajty.The buffer to which bytes are to be copied.

offset
Int32

Przesunięcie bajtu w buforze, od którego ma zostać rozpoczęte odczytywanie bajtów.The byte offset in the buffer at which to begin reading bytes.

count
Int32

Liczba bajtów, które mają zostać odczytane.The number of bytes to be read.

Zwraca

Int32

Całkowita liczba bajtów odczytanych array .The total number of bytes read into array. Może to być mniejsze niż liczba bajtów żądana, jeśli wiele bajtów nie jest obecnie dostępna lub wartość 0, jeśli osiągnięto koniec strumienia przed odczytaniem danych.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.

Wyjątki

Długość array minus offset jest mniejsza niż count .Length of array minus offset is less than count.

array to null.array is null.

offset lub count jest ujemna.offset or count is negative.

Strumień nie jest otwarty lub jest null .The stream is not open or is null.

Strumień nie obsługuje odczytywania.The stream does not support reading.

Metody zostały wywołane po zamknięciu strumienia.Methods were called after the stream was closed.

Przykłady

Ten przykład kodu jest częścią większego przykładu dostarczonego dla BufferedStream klasy.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"))

Uwagi

ReadMetoda zwróci wartość 0 tylko wtedy, gdy osiągnięto koniec strumienia.The Read method will return 0 only if the end of the stream is reached. We wszystkich innych przypadkach Read zawsze odczytuje co najmniej jeden bajt ze strumienia przed zwróceniem.In all other cases, Read always reads at least one byte from the stream before returning. Według definicji, jeśli nie są dostępne żadne dane ze strumienia po wywołaniu Read Read metody, metoda zwróci wartość 0 (koniec strumienia zostanie osiągnięty automatycznie).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). Implementacja może zwrócić mniejszą liczbę bajtów niż żądana, nawet jeśli koniec strumienia nie został osiągnięty.An implementation is free to return fewer bytes than requested even if the end of the stream has not been reached.

Służy BinaryReader do odczytywania typów danych pierwotnych.Use BinaryReader for reading primitive data types.

Zobacz też

Dotyczy