Udostępnij za pośrednictwem


MemoryStream.Read Metoda

Definicja

Przeciążenia

Read(Span<Byte>)

Odczytuje sekwencję bajtów z bieżącego strumienia pamięci i rozwija pozycję w strumieniu pamięci o liczbę odczytanych bajtów.

Read(Byte[], Int32, Int32)

Odczytuje blok bajtów z bieżącego strumienia i zapisuje dane w buforze.

Read(Span<Byte>)

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

Odczytuje sekwencję bajtów z bieżącego strumienia pamięci i rozwija pozycję w strumieniu pamięci o liczbę odczytanych bajtów.

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

Parametry

destinationbuffer
Span<Byte>

Region pamięci. Gdy ta metoda zwróci wartość, zawartość tego zakresu jest zastępowana przez bajty odczytane ze źródła bieżącego strumienia pamięci.

Zwraca

Całkowita liczba bajtów odczytanych do buforu. Może to być mniej 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 pamięci.

Dotyczy

Read(Byte[], Int32, Int32)

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

Odczytuje blok bajtów z bieżącego strumienia i zapisuje dane w buforze.

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

Parametry

buffer
Byte[]

Gdy ta metoda zwraca wartość , zawiera określoną tablicę bajtów z wartościami między offset i (offset + count - 1) zastąpionymi znakami odczytywanymi z bieżącego strumienia.

offset
Int32

Przesunięcie bajtów na podstawie zera, w buffer którym rozpocznie się przechowywanie danych z bieżącego strumienia.

count
Int32

Maksymalna liczba bajtów do odczytania.

Zwraca

Całkowita liczba bajtów zapisanych w buforze. Może to być mniejsze niż liczba bajtów żądanych, jeśli liczba bajtów nie jest obecnie dostępna, lub zero, jeśli koniec strumienia zostanie osiągnięty przed odczytaniem jakichkolwiek bajtów.

Wyjątki

buffer to null.

offset lub count jest ujemny.

offset odejmowany od długości buforu jest mniejszy niż count.

Bieżące wystąpienie strumienia jest zamknięte.

Przykłady

Ten przykład kodu jest częścią większego przykładu podanego MemoryStream dla klasy.

// Read the first 20 bytes from the stream.
byteArray = gcnew array<Byte>(memStream->Length);
count = memStream->Read( byteArray, 0, 20 );
// Read the first 20 bytes from the stream.
byteArray = new byte[memStream.Length];
count = memStream.Read(byteArray, 0, 20);
' Read the first 20 bytes from the stream.
byteArray = _
    New Byte(CType(memStream.Length, Integer)){}
count = memStream.Read(byteArray, 0, 20)

Uwagi

Ta metoda zastępuje Read.

Parametr offset daje przesunięcie pierwszego bajtu, w buffer którym są zapisywane dane z bieżącego strumienia. Parametr count daje maksymalną liczbę bajtów do odczytu z bieżącego strumienia. Zwracana wartość to rzeczywista liczba odczytanych bajtów lub zero, jeśli osiągnięto koniec strumienia.

Jeśli operacja odczytu zakończy się pomyślnie, bieżąca pozycja w strumieniu przechodzi przez liczbę odczytanych bajtów. Jeśli wystąpi wyjątek, bieżąca pozycja w strumieniu pozostaje niezmieniona.

Metoda Read zwróci zero 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 zero (koniec strumienia jest osiągany automatycznie). Implementacja jest bezpłatna, aby zwrócić 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.

Przestroga

Jeśli tablica bajtów określona w parametrze buffer jest buforem bazowym zwracanym przez metodę GetBuffer , zawartość tablicy zostanie zastąpiona i nie zostanie zgłoszony żaden wyjątek.

Zobacz też

Dotyczy