Freigeben über


Stream-Klasse

Stellt eine allgemeine Ansicht einer Folge von Bytes bereit.

Namespace: System.IO
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public MustInherit Class Stream
    Inherits MarshalByRefObject
    Implements IDisposable
'Usage
Dim instance As Stream
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public abstract class Stream : MarshalByRefObject, IDisposable
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class Stream abstract : public MarshalByRefObject, IDisposable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public abstract class Stream extends MarshalByRefObject implements IDisposable
SerializableAttribute 
ComVisibleAttribute(true) 
public abstract class Stream extends MarshalByRefObject implements IDisposable

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.

Streams umfassen drei grundlegende Vorgänge:

  1. Streams können gelesen werden. Bei einem Lesevorgang werden Daten von einem Stream in eine Datenstruktur übertragen, beispielsweise in ein Bytearray.

  2. In Streams kann geschrieben werden. Bei einem Schreibvorgang werden Daten aus einer Datenstruktur in einen Stream übertragen.

  3. Streams können Suchvorgänge unterstützen. Bei einem Suchvorgang wird die aktuelle Position in einem Stream abgefragt und bearbeitet. Die Suchfunktion ist von der Art des Sicherungsspeichers eines Streams abhängig. Netzwerkstreams verfügen beispielsweise über kein einheitliches Konzept einer aktuellen Position und unterstützen daher das Suchen in der Regel nicht.

Stream ist die abstrakte Basisklasse aller Streams. Ein Stream ist ein Modell für eine Folge von Bytes, wie eine Datei, ein Eingabe-/Ausgabegerät, eine Pipe für die Kommunikation zwischen Prozessen oder ein TCP/IP-Socket. Die Stream-Klasse und die davon abgeleiteten Klassen stellen eine allgemeine Ansicht dieser unterschiedlichen Eingabe- und Ausgabetypen bereit, sodass Programmierer sich nicht mit den Einzelheiten des Betriebssystems und der zugrunde liegenden Geräten befassen müssen.

Abhängig von der zugrunde liegenden Datenquelle oder vom Repository unterstützen Streams möglicherweise nur einige dieser Funktionen. Eine Anwendung kann die Funktionen eines Streams mithilfe der CanRead-Eigenschaft, der CanWrite-Eigenschaft und der CanSeek-Eigenschaft abfragen.

Die Read-Methode und die Write-Methode lesen und schreiben Daten in verschiedenen Formaten. Bei Streams, die das Suchen unterstützen, verwenden Sie die Seek-Methode und die SetLength-Methode sowie die Position-Eigenschaft und die Length-Eigenschaft, um die aktuelle Position und Länge eines Streams abzufragen und zu bearbeiten.

Einige der Implementierungen von Streams speichern die zugrunde liegenden Daten lokal im Puffer, um die Leistung zu verbessern. Bei diesen Streams können Sie mit der Flush-Methode die internen Puffer löschen und sicherstellen, dass alle Daten in die zugrunde liegende Datenquelle oder das Repository geschrieben werden.

Das Aufrufen von Close für einen Stream löscht alle zwischengespeicherten Daten, und zwar durch den Aufruf von Flush. Close gibt auch Ressourcen des Betriebssystems frei, wie Dateihandles, Netzwerkverbindungen oder den als internen Puffer verwendeten Speicher. Durch die BufferedStream-Klasse kann ein gepufferter Stream Wrapper eines anderen Streams werden, sodass die Lese- und Schreibleistung verbessert wird.

Wenn Sie einen Stream ohne Sicherungsspeicher benötigen (auch als Bitbucket bezeichnet), verwenden Sie Null.

Hinweise für Implementierer Beim Implementieren einer von Stream abgeleiteten Klasse müssen Sie Implementierungen für die Read-Methode und die Write-Methode bereitstellen. Die asynchronen Methoden BeginRead, EndRead, BeginWrite und EndWrite werden durch die synchronen Methoden Read und Write implementiert. Ebenso funktioniert die Implementierung von Read und Write auch mit den asynchronen Methoden. In den Standardimplementierungen von ReadByte und WriteByte wird ein neues, aus einem Element bestehendes Bytearray erstellt und anschließend die Implementierung der Read-Methode und der Write-Methode aufgerufen. Wenn Sie von Stream ableiten und über einen internen Bytepuffer verfügen, sollten Sie diese Methoden unbedingt überschreiben, sodass auf den internen Puffer bei besserer Leistung zugegriffen wird. Stellen Sie Implementierungen von CanRead, CanSeek, CanWrite, Flush, Length, Position, Seek und SetLength bereit. Überschreiben Sie nicht die Close-Methode. Legen Sie stattdessen die gesamte Streambereinigungslogik in der Dispose-Methode ab. Weitere Informationen finden Sie unter Implementieren einer Dispose-Methode.

Thema Position
Gewusst wie: Schreiben von Text in eine Datei .NET Framework: Grundlagen der Programmierung
Gewusst wie: Lesen aus einer Textdatei .NET Framework: Grundlagen der Programmierung
Gewusst wie: Schreiben von Text in eine Datei .NET Framework: Grundlagen der Programmierung
Gewusst wie: Lesen aus einer Textdatei .NET Framework: Grundlagen der Programmierung

Vererbungshierarchie

System.Object
   System.MarshalByRefObject
    System.IO.Stream
       Abgeleitete Klassen

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

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-Member
System.IO-Namespace
FileStream-Klasse
MemoryStream-Klasse
BufferedStream-Klasse

Weitere Ressourcen

Datei- und Stream-E/A
Gewusst wie: Lesen aus einer Textdatei
Gewusst wie: Schreiben von Text in eine Datei