BufferedStream.Read Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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ż
- BlockCopy(Array, Int32, Array, Int32, Int32)
- CanRead
- Write(Byte[], Int32, Int32)
- Wejście/Wyjście plików i strumieni
- Instrukcje: odczytywanie tekstu z pliku
- Instrukcje: zapisywanie tekstu w pliku