Stream.Read Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
Read(Span<Byte>) |
Liest beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes aus dem aktuellen Stream und erhöht die Position im Stream um die Anzahl der gelesenen Bytes. |
Read(Byte[], Int32, Int32) |
Liest beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes aus dem aktuellen Stream und erhöht die Position im Stream um die Anzahl der gelesenen Bytes. |
Read(Span<Byte>)
- Quelle:
- Stream.cs
- Quelle:
- Stream.cs
- Quelle:
- Stream.cs
Liest beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes aus dem aktuellen Stream und erhöht die Position im Stream um die Anzahl der gelesenen 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
Parameter
Ein Bereich im Arbeitsspeicher. Bei der Rückgabe dieser Methode werden die Inhalte dieses Bereichs durch die aus der aktuellen Quelle gelesenen Bytes ersetzt.
Gibt zurück
Die Gesamtanzahl der in den Puffer gelesenen Bytes. Dies kann kleiner als die Größe des Puffers sein, wenn viele Bytes derzeit nicht verfügbar sind, oder null (0), wenn die Länge des Puffers 0 ist oder das Ende des Datenstroms erreicht wurde.
Hinweise
Verwenden Sie die CanRead -Eigenschaft, um zu bestimmen, ob die aktuelle instance Lesevorgänge unterstützt. Verwenden Sie die ReadAsync -Methode, um asynchron aus dem aktuellen Stream zu lesen.
Implementierungen dieser Methode lesen maximal buffer.Length
Bytes aus dem aktuellen Stream und speichern sie in buffer
. Die aktuelle Position im Stream wird um die Anzahl der gelesenen Bytes erweitert. Wenn jedoch eine Ausnahme auftritt, bleibt die aktuelle Position im Stream unverändert. Implementierungen geben die Anzahl der gelesenen Bytes zurück. Wenn mehr als 0 Bytes angefordert werden, schließt die Implementierung den Vorgang erst ab, wenn mindestens ein Byte daten gelesen werden kann (wenn null Bytes angefordert wurden, können einige Implementierungen ebenfalls nicht abgeschlossen sein, bis mindestens ein Byte verfügbar ist, aber in einem solchen Fall werden keine Daten aus dem Stream verbraucht). Read gibt 0 nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Daten im Stream vorhanden sind und nicht mehr erwartet wird (z. B. ein geschlossener Socket oder ein Dateiende). Eine Implementierung kann auch dann weniger Bytes zurückgeben als angefordert, wenn das Ende des Datenstroms nicht erreicht wurde.
Verwenden Sie zum BinaryReader Lesen primitiver Datentypen.
Gilt für:
Read(Byte[], Int32, Int32)
- Quelle:
- Stream.cs
- Quelle:
- Stream.cs
- Quelle:
- Stream.cs
Liest beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes aus dem aktuellen Stream und erhöht die Position im Stream um die Anzahl der gelesenen 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
Parameter
- buffer
- Byte[]
Ein Bytearray. Nach dem Beenden dieser Methode enthält der Puffer das angegebene Bytearray mit den Werten zwischen offset
und (offset
+ count
- 1), die durch aus der aktuellen Quelle gelesene Bytes ersetzt wurden.
- offset
- Int32
Der nullbasierte Byteoffset im buffer
, ab dem die aus dem aktuellen Stream gelesenen Daten gespeichert werden.
- count
- Int32
Die maximale Anzahl an Bytes, die aus dem aktuellen Stream gelesen werden sollen.
Gibt zurück
Die Gesamtanzahl der in den Puffer gelesenen Bytes. Dies kann kleiner als die Anzahl der angeforderten Bytes sein, wenn viele Bytes derzeit nicht verfügbar sind, oder null (0), wenn count
0 ist oder das Ende des Datenstroms erreicht wurde.
Ausnahmen
Die Summe von offset
und count
ist größer als die Pufferlänge.
buffer
ist null
.
offset
oder count
ist ein negativer Wert.
Ein E/A-Fehler tritt auf.
Lesevorgänge werden vom Stream nicht unterstützt.
Es wurden Methoden aufgerufen, nachdem der Stream geschlossen wurde.
Beispiele
Das folgende Beispiel zeigt, wie Read Sie einen Datenblock lesen.
using namespace System;
using namespace System::IO;
public ref class Block
{
public:
static void Main()
{
Stream^ s = gcnew MemoryStream();
for (int i = 0; i < 100; i++)
{
s->WriteByte((Byte)i);
}
s->Position = 0;
// Now read s into a byte buffer.
array<Byte>^ bytes = gcnew array<Byte>(s->Length);
int numBytesToRead = (int) s->Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to 10.
int n = s->Read(bytes, numBytesRead, 10);
// The end of the file is reached.
if (n == 0)
{
break;
}
numBytesRead += n;
numBytesToRead -= n;
}
s->Close();
// numBytesToRead should be 0 now, and numBytesRead should
// equal 100.
Console::WriteLine("number of bytes read: {0:d}", numBytesRead);
}
};
int main()
{
Block::Main();
}
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
Hinweise
Verwenden Sie die CanRead -Eigenschaft, um zu bestimmen, ob die aktuelle instance Lesevorgänge unterstützt. Verwenden Sie die ReadAsync -Methode, um asynchron aus dem aktuellen Stream zu lesen.
Implementierungen dieser Methode lesen maximal count
Bytes aus dem aktuellen Stream und speichern sie am buffer
Anfang unter offset
. Die aktuelle Position im Stream wird um die Anzahl der gelesenen Bytes erweitert. Wenn jedoch eine Ausnahme auftritt, bleibt die aktuelle Position im Stream unverändert. Implementierungen geben die Anzahl der gelesenen Bytes zurück. Wenn mehr als 0 Bytes angefordert werden, schließt die Implementierung den Vorgang erst ab, wenn mindestens ein Byte Daten gelesen werden kann (einige Implementierungen können auch dann nicht abgeschlossen werden, wenn mindestens ein Byte verfügbar ist, auch wenn null Bytes angefordert wurden, aber in einem solchen Fall werden keine Daten aus dem Stream verbraucht). Read gibt 0 nur zurück, wenn null Bytes angefordert wurden oder wenn keine weiteren Daten im Stream vorhanden sind und nicht mehr erwartet wird (z. B. ein geschlossener Socket oder ein Dateiende). Eine Implementierung kann auch dann weniger Bytes zurückgeben als angefordert, wenn das Ende des Datenstroms nicht erreicht wurde.
Verwenden Sie zum BinaryReader Lesen primitiver Datentypen.
Weitere Informationen
- Datei- und Stream-E/A
- How to: Lesen von Text aus einer Datei
- How to: Schreiben von Text in eine Datei