Stream.Read-Methode
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.
Namespace: System.IO
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public MustOverride Function Read ( _
<InAttribute> <OutAttribute> buffer As Byte(), _
offset As Integer, _
count As Integer _
) As Integer
'Usage
Dim instance As Stream
Dim buffer As Byte()
Dim offset As Integer
Dim count As Integer
Dim returnValue As Integer
returnValue = instance.Read(buffer, offset, count)
public abstract int Read (
[InAttribute] [OutAttribute] byte[] buffer,
int offset,
int count
)
public:
virtual int Read (
[InAttribute] [OutAttribute] array<unsigned char>^ buffer,
int offset,
int count
) abstract
public abstract int Read (
/** @attribute InAttribute() */ /** @attribute OutAttribute() */ byte[] buffer,
int offset,
int count
)
public abstract function Read (
buffer : byte[],
offset : int,
count : int
) : int
Parameter
- buffer
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
Der nullbasierte Byteoffset im buffer, ab dem die aus dem aktuellen Stream gelesenen Daten gespeichert werden.
- count
Die maximale Anzahl an Bytes, die aus dem aktuellen Stream gelesen werden sollen.
Rückgabewert
Die Gesamtanzahl der in den Puffer gelesenen Bytes. Dies kann weniger als die Anzahl der angeforderten Bytes sein, wenn diese Anzahl an Bytes derzeit nicht verfügbar ist, oder 0, wenn das Ende des Streams erreicht ist.
Ausnahmen
Ausnahmetyp | Bedingung |
---|---|
Die Summe aus offset und count ist größer als die Pufferlänge. |
|
buffer ist NULL (Nothing in Visual Basic). |
|
offset oder count ist negativ. |
|
Ein E/A-Fehler tritt auf. |
|
Der Stream unterstützt keine Lesevorgänge. |
|
Es wurden Methoden aufgerufen, nachdem der Stream geschlossen wurde. |
Hinweise
Ein Beispiel für das Erstellen einer Datei und das Schreiben von Text in eine Datei finden Sie unter Gewusst wie: Schreiben von Text in eine Datei. Ein Beispiel für das Lesen von Text aus einer Datei finden Sie unter Gewusst wie: Lesen aus einer Textdatei. Ein Beispiel für das Lesen aus einer Binärdatei und das Schreiben in eine Binärdatei finden Sie unter Gewusst wie: Lesen und Schreiben einer neu erstellten Datendatei.
Verwenden Sie die CanRead-Eigenschaft, um zu bestimmen, ob die aktuelle Instanz Lesevorgänge unterstützt.
Die Implementierungen dieser Methode lesen maximal count Bytes aus dem aktuellen Stream und speichern diese beginnend bei offset im buffer. Die aktuelle Position im Stream wird um die Anzahl der gelesenen Bytes nach vorne verschoben. Wenn eine Ausnahme auftritt, wird die Position im Stream jedoch nicht geändert. Die Implementierungen geben die Anzahl der gelesenen Bytes zurück. Der Rückgabewert ist nur dann null, wenn die aktuelle Position das Ende des Streams ist. Die Implementierungen blockieren, bis mindestens ein Byte mit Daten gelesen werden kann, wenn keine Daten verfügbar sind. Read gibt nur dann 0 zurück, wenn sich keine Daten im Stream befinden und auch keine weiteren Daten erwartet werden (beispielsweise bei einem geschlossenen Socket oder dem Ende der Datei). Eine Implementierung kann weniger Bytes als angefordert zurückgeben, auch wenn noch nicht das Ende des Streams erreicht ist.
Verwenden Sie BinaryReader für das Lesen primitiver Datentypen.
Beispiel
Im folgenden Beispiel wird veranschaulicht, wie mithilfe von Read ein Datenblock gelesen wird.
Imports System
Imports System.IO
Imports Microsoft.VisualBasic
Public Class Block
Public Shared Sub Main()
Dim s As New MemoryStream()
Dim i As Integer
For i = 0 To 99
s.WriteByte(CByte(i))
Next i
s.Position = 0
' Now read in s into a byte buffer.
Dim bytes(s.Length) As Byte
Dim numBytesToRead As Integer = CInt(s.Length)
Dim numBytesRead As Integer = 0
While numBytesToRead > 0
' Read can return anything from 0 to numBytesToRead.
Dim n As Integer = s.Read(bytes, numBytesRead, numBytesToRead)
' The end of the file has been reached.
If n = 0 Then
Exit While
End If
numBytesRead += n
numBytesToRead -= n
End While
s.Close()
' numBytesToRead should be 0 now, and numBytesRead should
' equal 100.
Console.WriteLine("number of bytes read: " & numBytesRead.ToString())
End Sub
End Class
using System;
using System.IO;
public class Block
{
public static void Main()
{
Stream s = new MemoryStream();
for (int i=0; i<100; i++)
s.WriteByte((byte)i);
s.Position = 0;
// Now read s into a byte buffer.
byte[] bytes = new byte[s.Length];
int numBytesToRead = (int) s.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to numBytesToRead.
int n = s.Read(bytes, numBytesRead, numBytesToRead);
// 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: "+numBytesRead);
}
}
using namespace System;
using namespace System::IO;
int 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 numBytesToRead.
int n = s->Read( bytes, numBytesRead, numBytesToRead );
// 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}", numBytesRead );
}
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
Stream-Klasse
Stream-Member
System.IO-Namespace
Weitere Ressourcen
Datei- und Stream-E/A
Gewusst wie: Lesen aus einer Textdatei
Gewusst wie: Schreiben von Text in eine Datei