Stream.Read Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přetížení
| Name | Description |
|---|---|
| Read(Span<Byte>) |
Při přepsání v odvozené třídě přečte posloupnost bajtů z aktuálního datového proudu a posune pozici v datovém proudu o počet přečtených bajtů. |
| Read(Byte[], Int32, Int32) |
Při přepsání v odvozené třídě přečte posloupnost bajtů z aktuálního datového proudu a posune pozici v datovém proudu o počet přečtených bajtů. |
Read(Span<Byte>)
- Zdroj:
- Stream.cs
- Zdroj:
- Stream.cs
- Zdroj:
- Stream.cs
- Zdroj:
- Stream.cs
- Zdroj:
- Stream.cs
Při přepsání v odvozené třídě přečte posloupnost bajtů z aktuálního datového proudu a posune pozici v datovém proudu o počet přečtených bajtů.
public:
virtual int Read(Span<System::Byte> buffer);
public virtual int Read(Span<byte> buffer);
abstract member Read : Span<byte> -> int
override this.Read : Span<byte> -> int
Public Overridable Function Read (buffer As Span(Of Byte)) As Integer
Parametry
Oblast paměti. Když tato metoda vrátí, obsah této oblasti se nahradí bajty načtenými z aktuálního zdroje.
Návraty
Celkový počet bajtů přečtených do vyrovnávací paměti. To může být menší než velikost vyrovnávací paměti, pokud není aktuálně k dispozici mnoho bajtů, nebo nula (0), pokud je délka vyrovnávací paměti nula nebo byl dosažen konec datového proudu.
Poznámky
CanRead Pomocí vlastnosti určete, zda aktuální instance podporuje čtení. ReadAsync Pomocí metody můžete číst asynchronně z aktuálního datového proudu.
Implementace této metody čtou maximum buffer.Length bajtů z aktuálního datového proudu a ukládají je do buffer. Aktuální pozice v rámci datového proudu je rozšířena počtem přečtených bajtů; Pokud však dojde k výjimce, zůstane aktuální pozice v rámci datového proudu nezměněna. Implementace vrátí počet přečtených bajtů. Pokud je požadováno více než nula bajtů, implementace operaci nedokončí, dokud nebude možné číst alespoň jeden bajt dat (pokud byly požadovány nulové bajty, některé implementace se můžou podobně nedokončit, dokud nebude k dispozici alespoň jeden bajt, ale v takovém případě nebudou z datového proudu spotřebována žádná data).
Read vrátí hodnotu 0 pouze v případě, že byly požadovány nulové bajty nebo pokud v datovém proudu nejsou žádná další data a očekává se žádné další (například uzavřený soket nebo konec souboru). Implementace je zdarma vrátit méně bajtů, než je požadováno, i když nebyl dosažen konec datového proudu.
Slouží BinaryReader ke čtení primitivních datových typů.
Platí pro
Read(Byte[], Int32, Int32)
- Zdroj:
- Stream.cs
- Zdroj:
- Stream.cs
- Zdroj:
- Stream.cs
- Zdroj:
- Stream.cs
- Zdroj:
- Stream.cs
Při přepsání v odvozené třídě přečte posloupnost bajtů z aktuálního datového proudu a posune pozici v datovém proudu o počet přečtených bajtů.
public:
abstract int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public abstract int Read(byte[] buffer, int offset, int count);
abstract member Read : byte[] * int * int -> int
Public MustOverride Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer
Parametry
- buffer
- Byte[]
Pole bajtů. Pokud tato metoda vrátí, vyrovnávací paměť obsahuje určenou bajtovou matici s hodnotami mezi offset a (offset + count - 1) nahrazené bajty přečtenými z aktuálního zdroje.
- offset
- Int32
Posun bajtů založený na nule, ve buffer kterém se mají začít ukládat data načtená z aktuálního datového proudu.
- count
- Int32
Maximální počet bajtů, které se mají číst z aktuálního datového proudu.
Návraty
Celkový počet bajtů přečtených do vyrovnávací paměti. Může to být menší než počet bajtů požadovaných v případě, že počet bajtů není aktuálně k dispozici, nebo nula (0), pokud count je 0 nebo byl dosažen konec datového proudu.
Výjimky
Součet offset a count je větší než délka vyrovnávací paměti.
buffer je null.
offset nebo count je negativní.
Dojde k vstupně-výstupní chybě.
Stream nepodporuje čtení.
Metody byly volány po zavření datového proudu.
Příklady
Následující příklad ukazuje, jak použít Read ke čtení bloku dat.
using System;
using System.IO;
public class Block
{
public static void Main()
{
Stream s = new MemoryStream();
for (int i = 0; i < 122; i++)
{
s.WriteByte((byte)i);
}
s.Position = 0;
// Now read s into a byte buffer with a little padding.
byte[] bytes = new byte[s.Length + 10];
int numBytesToRead = (int)s.Length;
int numBytesRead = 0;
do
{
// Read may return anything from 0 to 10.
int n = s.Read(bytes, numBytesRead, 10);
numBytesRead += n;
numBytesToRead -= n;
} while (numBytesToRead > 0);
s.Close();
Console.WriteLine("number of bytes read: {0:d}", numBytesRead);
}
}
Imports System.IO
Public Class Block
Public Shared Sub Main()
Dim s As Stream = New MemoryStream()
For i As Integer = 0 To 121
s.WriteByte(CType(i, Byte))
Next i
s.Position = 0
' Now read s into a byte buffer that is padded slightly.
Dim bytes(s.Length + 10) As Byte
Dim numBytesToRead As Integer = s.Length
Dim numBytesRead As Integer = 0
Dim n As Integer
Do
' Read may return anything from 0 to 10.
n = s.Read(bytes, numBytesRead, 10)
' The end of the file is reached.
numBytesRead += n
numBytesToRead -= n
Loop While numBytesToRead > 0
s.Close()
Console.WriteLine("number of bytes read: {0:d}", numBytesRead)
End Sub
End Class
Poznámky
CanRead Pomocí vlastnosti určete, zda aktuální instance podporuje čtení. ReadAsync Pomocí metody můžete číst asynchronně z aktuálního datového proudu.
Implementace této metody čtou maximum count bajtů z aktuálního datového proudu a ukládají je buffer na začátku .offset Aktuální pozice v rámci datového proudu je rozšířena počtem přečtených bajtů; Pokud však dojde k výjimce, zůstane aktuální pozice v rámci datového proudu nezměněna. Implementace vrátí počet přečtených bajtů. Pokud je požadováno více než nula bajtů, implementace operaci nedokončí, dokud nebude možné číst alespoň jeden bajt dat (některé implementace se mohou podobně nedokončit, dokud nebude k dispozici alespoň jeden bajt, i když byly požadovány nulové bajty, ale v takovém případě nebudou spotřebována žádná data z datového proudu).
Read vrátí hodnotu 0 pouze v případě, že byly požadovány nulové bajty nebo pokud v datovém proudu nejsou žádná další data a očekává se žádné další (například uzavřený soket nebo konec souboru). Implementace je zdarma vrátit méně bajtů, než je požadováno, i když nebyl dosažen konec datového proudu.
Slouží BinaryReader ke čtení primitivních datových typů.