Stream.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>) |
Wanneer deze wordt overschreven in een afgeleide klasse, leest u een reeks bytes uit de huidige stroom en wordt de positie binnen de stream verplaatst door het aantal gelezen bytes. |
| Read(Byte[], Int32, Int32) |
Wanneer deze wordt overschreven in een afgeleide klasse, leest u een reeks bytes uit de huidige stroom en wordt de positie binnen de stream verplaatst door het aantal gelezen bytes. |
Read(Span<Byte>)
- Bron:
- Stream.cs
- Bron:
- Stream.cs
- Bron:
- Stream.cs
- Bron:
- Stream.cs
- Bron:
- Stream.cs
Wanneer deze wordt overschreven in een afgeleide klasse, leest u een reeks bytes uit de huidige stroom en wordt de positie binnen de stream verplaatst door het aantal gelezen bytes.
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
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 de grootte van de buffer als er momenteel niet veel bytes beschikbaar zijn, of nul (0) als de lengte van de buffer nul is of het einde van de stroom 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. Als er meer dan nul bytes worden aangevraagd, kan de implementatie de bewerking pas voltooien als er ten minste één byte aan gegevens kan worden gelezen (als er nul bytes zijn aangevraagd, kunnen sommige implementaties op dezelfde manier niet worden voltooid totdat ten minste één byte beschikbaar is, maar worden er in dat geval geen gegevens uit de stream verbruikt).
Read retourneert alleen 0 als er nul bytes zijn aangevraagd of wanneer er geen gegevens meer in de stroom staan en er 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:
- Stream.cs
- Bron:
- Stream.cs
- Bron:
- Stream.cs
- Bron:
- Stream.cs
- Bron:
- Stream.cs
Wanneer deze wordt overschreven in een afgeleide klasse, leest u een reeks bytes uit de huidige stroom en wordt de positie binnen de stream verplaatst door het aantal gelezen bytes.
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
Parameters
- buffer
- Byte[]
Een matrix van bytes. Wanneer deze methode wordt geretourneerd, bevat de buffer de opgegeven bytematrix met de waarden tussen offset en (offset + count - 1) vervangen door de bytes die zijn gelezen uit de huidige bron.
- offset
- Int32
De byte-offset buffer op basis van nul waarin de gegevens worden opgeslagen die uit de huidige stroom worden gelezen.
- count
- Int32
Het maximum aantal bytes dat moet worden gelezen uit de huidige stream.
Retouren
Het totale aantal bytes dat in de buffer is gelezen. Dit kan kleiner zijn dan het aantal aangevraagde bytes als dat aantal bytes momenteel niet beschikbaar is, of nul (0) als count dit 0 is of het einde van de stream is bereikt.
Uitzonderingen
De som van offset en count is groter dan de bufferlengte.
buffer is null.
offset of count is negatief.
Er treedt een I/O-fout op.
De stream biedt geen ondersteuning voor lezen.
Methoden werden aangeroepen nadat de stream is gesloten.
Voorbeelden
In het volgende voorbeeld ziet u hoe Read u een gegevensblok kunt lezen.
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
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 count de huidige stroom en slaan ze op buffervanaf offset . 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. Als er meer dan nul bytes worden aangevraagd, wordt de bewerking pas voltooid als er ten minste één byte aan gegevens kan worden gelezen (sommige implementaties kunnen op dezelfde manier niet worden voltooid totdat ten minste één byte beschikbaar is, zelfs als er nul bytes zijn aangevraagd, maar in dat geval worden er geen gegevens uit de stream verbruikt).
Read retourneert alleen 0 als er nul bytes zijn aangevraagd of wanneer er geen gegevens meer in de stroom staan en er 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.
Zie ook
- Bestands- en Stream-I/O
- Procedure: Tekst uit een bestand lezen
- Procedure: Tekst naar een bestand schrijven