BufferedStream.Read Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Overloads
| Name | Description |
|---|---|
| Read(Span<Byte>) |
Kopieert bytes van de huidige gebufferde stroom naar een bytespanne en verplaatst de positie binnen de gebufferde stroom door het aantal gelezen bytes. |
| Read(Byte[], Int32, Int32) |
Hiermee kopieert u bytes van de huidige gebufferde stroom naar een matrix. |
Read(Span<Byte>)
- Bron:
- BufferedStream.cs
- Bron:
- BufferedStream.cs
- Bron:
- BufferedStream.cs
- Bron:
- BufferedStream.cs
- Bron:
- BufferedStream.cs
Kopieert bytes van de huidige gebufferde stroom naar een bytespanne en verplaatst de positie binnen de gebufferde stroom door het aantal gelezen bytes.
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
Parameters
Een geheugengebied. Wanneer deze methode wordt geretourneerd, wordt de inhoud van deze regio vervangen door de bytes die zijn gelezen uit de huidige bron.
Retouren
Het totale aantal bytes dat in de buffer is gelezen. Dit kan kleiner zijn dan het aantal bytes dat is toegewezen in de buffer als dat aantal bytes momenteel niet beschikbaar is, of nul (0) als het einde van de stream is bereikt.
Opmerkingen
Gebruik de CanRead eigenschap om te bepalen of het huidige exemplaar leesopties ondersteunt. Gebruik de ReadAsync methode om asynchroon te lezen vanuit de huidige stroom.
Implementaties van deze methode lezen maximaal bytes uit buffer.Length de huidige stream en slaan ze op in buffer. De huidige positie in de stream wordt geavanceerd door het aantal gelezen bytes; Als er echter een uitzondering optreedt, blijft de huidige positie binnen de stroom ongewijzigd. Implementaties retourneren het aantal bytes dat is gelezen. De implementatie wordt geblokkeerd totdat ten minste één byte aan gegevens kan worden gelezen, in het geval dat er geen gegevens beschikbaar zijn.
Read retourneert alleen 0 wanneer er geen gegevens meer in de stroom staan en niet meer wordt verwacht (zoals een gesloten socket of einde van het bestand). Een implementatie is gratis om minder bytes te retourneren dan aangevraagd, zelfs als het einde van de stream niet is bereikt.
Gebruiken BinaryReader voor het lezen van primitieve gegevenstypen.
Van toepassing op
Read(Byte[], Int32, Int32)
- Bron:
- BufferedStream.cs
- Bron:
- BufferedStream.cs
- Bron:
- BufferedStream.cs
- Bron:
- BufferedStream.cs
- Bron:
- BufferedStream.cs
Hiermee kopieert u bytes van de huidige gebufferde stroom naar een matrix.
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
Parameters
- bufferarray
- Byte[]
- offset
- Int32
De byte-offset in de buffer waarop bytes moeten worden gelezen.
- count
- Int32
Het aantal te lezen bytes.
Retouren
Het totale aantal bytes dat is gelezen in array. Dit kan kleiner zijn dan het aantal aangevraagde bytes als er momenteel niet veel bytes beschikbaar zijn of 0 als het einde van de stream is bereikt voordat gegevens kunnen worden gelezen.
Uitzonderingen
De lengte van array min offset is kleiner dan count.
array is null.
offset of count is negatief.
De stream is niet geopend of is null.
De stream biedt geen ondersteuning voor lezen.
Methoden werden aangeroepen nadat de stream is gesloten.
Voorbeelden
Dit codevoorbeeld maakt deel uit van een groter voorbeeld voor de BufferedStream klasse.
// 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"))
Opmerkingen
De Read methode retourneert alleen 0 als het einde van de stream is bereikt. In alle andere gevallen Read leest u altijd ten minste één byte uit de stream voordat u terugkeert. Als er geen gegevens uit de stream beschikbaar zijn bij een aanroep naar Read, retourneert de Read methode 0 (het einde van de stream wordt automatisch bereikt). Een implementatie is gratis om minder bytes te retourneren dan aangevraagd, zelfs als het einde van de stream niet is bereikt.
Gebruiken BinaryReader voor het lezen van primitieve gegevenstypen.
Zie ook
- BlockCopy(Array, Int32, Array, Int32, Int32)
- CanRead
- Write(Byte[], Int32, Int32)
- Bestands- en Stream-I/O
- Procedure: Tekst uit een bestand lezen
- Procedure: Tekst naar een bestand schrijven