Udostępnij za pośrednictwem


BufferedStream.Read Metoda

Definicja

Przeciążenia

Nazwa Opis
Read(Span<Byte>)

Kopiuje bajty z bieżącego buforowanego strumienia do zakresu bajtów i rozwija pozycję w buforowanych strumieniach według liczby odczytanych bajtów.

Read(Byte[], Int32, Int32)

Kopiuje bajty z bieżącego buforowanego strumienia do tablicy.

Read(Span<Byte>)

Źródło:
BufferedStream.cs
Źródło:
BufferedStream.cs
Źródło:
BufferedStream.cs
Źródło:
BufferedStream.cs
Źródło:
BufferedStream.cs

Kopiuje bajty z bieżącego buforowanego strumienia do zakresu bajtów i rozwija pozycję w buforowanych strumieniach według liczby odczytanych bajtów.

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. Gdy ta metoda zwraca, zawartość tego regionu jest zastępowana przez bajty odczytane z bieżącego źródła.

Zwraca

Całkowita liczba bajtów odczytanych do buforu. Może to być mniejsza niż liczba bajtów przydzielonych w buforze, jeśli liczba bajtów nie jest obecnie dostępna lub zero (0), jeśli osiągnięto koniec strumienia.

Uwagi

CanRead Użyj właściwości , aby określić, czy bieżące wystąpienie obsługuje odczyt. ReadAsync Użyj metody , aby odczytywać asynchronicznie z bieżącego strumienia.

Implementacje tej metody odczytują maksymalnie bajty buffer.Length z bieżącego strumienia i przechowują je w pliku buffer. Bieżące położenie w strumieniu jest zaawansowane przez liczbę odczytanych bajtów; jednak w przypadku wystąpienia wyjątku bieżąca pozycja w strumieniu pozostaje niezmieniona. Implementacje zwracają liczbę odczytanych bajtów. Implementacja zostanie zablokowana do czasu odczytania co najmniej jednego bajtu danych w przypadku, gdy żadne dane nie są dostępne. Read Zwraca wartość 0 tylko wtedy, gdy nie ma więcej danych w strumieniu i nie oczekuje się więcej (np. zamkniętego gniazda lub końca pliku). Implementacja jest bezpłatna, aby zwracać mniej bajtów niż żądano, nawet jeśli koniec strumienia nie został osiągnięty.

Służy BinaryReader do odczytywania typów danych pierwotnych.

Dotyczy

Read(Byte[], Int32, Int32)

Źródło:
BufferedStream.cs
Źródło:
BufferedStream.cs
Źródło:
BufferedStream.cs
Źródło:
BufferedStream.cs
Źródło:
BufferedStream.cs

Kopiuje bajty z bieżącego buforowanego strumienia do tablicy.

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

Parametry

bufferarray
Byte[]
offset
Int32

Przesunięcie bajtu w buforze, w którym należy rozpocząć odczytywanie bajtów.

count
Int32

Liczba bajtów do odczytania.

Zwraca

Całkowita liczba bajtów odczytanych do arrayelementu . Może to być mniejsza niż liczba bajtów żądanych, jeśli liczba bajtów nie jest obecnie dostępna, lub 0, jeśli koniec strumienia został osiągnięty, zanim będzie można odczytać jakiekolwiek dane.

Wyjątki

array Długość minus offset jest mniejsza niż count.

Parametr array ma wartość null.

offset lub count jest ujemny.

Strumień nie jest otwarty lub ma wartość null.

Strumień nie obsługuje odczytu.

Metody zostały wywołane po zamknięciu strumienia.

Przykłady

Ten przykład kodu jest częścią większego przykładu udostępnionego dla klasy BufferedStream.

// 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.
printfn "Receiving data using BufferedStream."
bytesReceived <- 0
let startTime = DateTime.Now

let mutable numBytesToRead = receivedData.Length

let mutable broken = false
while not broken && numBytesToRead > 0 do
    // Read may return anything from 0 to numBytesToRead.
    let n = bufStream.Read(receivedData,0, receivedData.Length)
    // The end of the file is reached.
    if n = 0 then
        broken <- true
    else
        bytesReceived <- bytesReceived + n
        numBytesToRead <- numBytesToRead - n

let bufferedTime = (DateTime.Now - startTime).TotalSeconds
printfn $"{bytesReceived} bytes received in {bufferedTime:F1} seconds.\n"
' 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

Read Metoda zwróci wartość 0 tylko wtedy, gdy osiągnięto koniec strumienia. We wszystkich innych przypadkach Read zawsze odczytuje co najmniej jeden bajt ze strumienia przed zwróceniem. Z definicji, jeśli żadne dane nie są dostępne ze strumienia po wywołaniu metody Read, Read metoda zwraca wartość 0 (koniec strumienia jest osiągany automatycznie). Implementacja jest bezpłatna, aby zwracać mniej bajtów niż żądano, nawet jeśli koniec strumienia nie został osiągnięty.

Służy BinaryReader do odczytywania typów danych pierwotnych.

Zobacz też

Dotyczy