BufferedStream.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í
Read(Span<Byte>) |
Zkopíruje bajty z aktuálního datového proudu ve vyrovnávací paměti do rozsahu bajtů a posune pozici v rámci vyrovnávacího datového proudu o počet přečtených bajtů. |
Read(Byte[], Int32, Int32) |
Zkopíruje bajty z aktuálního datového proudu ve vyrovnávací paměti do pole. |
Read(Span<Byte>)
- Zdroj:
- BufferedStream.cs
- Zdroj:
- BufferedStream.cs
- Zdroj:
- BufferedStream.cs
Zkopíruje bajty z aktuálního datového proudu ve vyrovnávací paměti do rozsahu bajtů a posune pozici v rámci vyrovnávacího datového proudu o počet přečtených bajtů.
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
Oblast paměti. Při vrácení této metody se obsah této oblasti nahradí bajty načtenými z aktuálního zdroje.
Návraty
Celkový počet bajtů načtených do vyrovnávací paměti. To může být menší než počet bajtů přidělených ve vyrovnávací paměti, pokud tento počet bajtů není aktuálně k dispozici, nebo nula (0), pokud bylo dosaženo konce datového proudu.
Poznámky
CanRead Pomocí vlastnosti určete, jestli aktuální instance podporuje čtení. K asynchronnímu čtení z aktuálního datového ReadAsync proudu použijte metodu .
Implementace této metody načtou maximální počet bajtů z aktuálního buffer.Length
datového proudu a uloží je do buffer
. Aktuální pozice v rámci streamu je rozšířena o počet přečtených bajtů; Pokud však dojde k výjimce, aktuální pozice v rámci datového proudu zůstane beze změny. Implementace vrátí počet přečtených bajtů. Implementace se zablokuje, dokud nebude možné číst alespoň jeden bajt dat v případě, že nebudou k dispozici žádná data. Read
vrátí hodnotu 0 pouze v případě, že v datovém proudu nejsou žádná další data a neočekává se žádná další data (například uzavřený soket nebo konec souboru). Implementace může bezplatně vracet méně bajtů, než je požadováno, i když nebylo dosaženo konce datového proudu.
Slouží BinaryReader ke čtení primitivních datových typů.
Platí pro
Read(Byte[], Int32, Int32)
- Zdroj:
- BufferedStream.cs
- Zdroj:
- BufferedStream.cs
- Zdroj:
- BufferedStream.cs
Zkopíruje bajty z aktuálního datového proudu ve vyrovnávací paměti do pole.
public:
override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public:
override int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public override int Read (byte[] array, int offset, int count);
public override int Read (byte[] buffer, int offset, int count);
override this.Read : byte[] * int * int -> int
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer
Public Overrides Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer
Parametry
- arraybuffer
- Byte[]
Vyrovnávací paměť, do které se mají kopírovat bajty.
- offset
- Int32
Posun bajtů ve vyrovnávací paměti, při kterém se mají začít číst bajty.
- count
- Int32
Počet bajtů, které se mají číst.
Návraty
Celkový počet bajtů přečtených do array
. Může to být menší počet bajtů, než je počet požadovaných bajtů, pokud tento počet bajtů není aktuálně k dispozici, nebo 0, pokud bylo dosaženo konce datového proudu před čtením jakýchkoli dat.
Výjimky
Délka minus array
offset
je menší než count
.
array
je null
.
offset
nebo count
je negativní.
Datový proud není otevřený nebo je null
.
Stream nepodporuje čtení.
Metody byly volány po zavření datového proudu.
Příklady
Tento příklad kódu je součástí většího příkladu BufferedStream pro třídu.
// 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.
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"))
Poznámky
Metoda Read
vrátí hodnotu 0 pouze v případě, že je dosaženo konce datového proudu. Ve všech ostatních případech Read
vždy před vrácením přečte alespoň jeden bajt z datového proudu. Pokud nejsou z datového proudu při volání Read
k dispozici žádná data, Read
vrátí metoda hodnotu 0 (konec datového proudu se dosáhne automaticky). Implementace může bezplatně vracet méně bajtů, než je požadováno, i když nebylo dosaženo konce datového proudu.
Slouží BinaryReader ke čtení primitivních datových typů.
Viz také
- BlockCopy(Array, Int32, Array, Int32, Int32)
- CanRead
- Write(Byte[], Int32, Int32)
- Vstupně-výstupní operace souborů a Stream
- Postupy: Čtení textu ze souboru
- Postupy: Zápis textu do souboru