Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Stream-Klasse

 

Veröffentlicht: August 2016

Stellt eine allgemeine Ansicht einer Folge von Bytes bereit. Dies ist eine abstrakte Klasse.

Informationen zum Durchsuchen des .NET Framework-Quellcodes für diesen Typ finden Sie unter der Reference Source.

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


[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Stream : MarshalByRefObject, IDisposable

NameBeschreibung
System_CAPS_protmethodStream()

Initialisiert eine neue Instanz der Stream-Klasse.

NameBeschreibung
System_CAPS_pubpropertyCanRead

Ruft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob der aktuelle Stream Lesevorgänge unterstützt.

System_CAPS_pubpropertyCanSeek

Ruft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob der aktuelle Stream Suchvorgänge unterstützt.

System_CAPS_pubpropertyCanTimeout

Ruft einen Wert ab, der bestimmt, ob für den aktuellen Stream ein Timeout möglich ist.

System_CAPS_pubpropertyCanWrite

Ruft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob der aktuelle Stream Schreibvorgänge unterstützt.

System_CAPS_pubpropertyLength

Ruft beim Überschreiben in einer abgeleiteten Klasse die Länge des Streams in Bytes ab.

System_CAPS_pubpropertyPosition

Ruft beim Überschreiben in einer abgeleiteten Klasse die Position im aktuellen Stream ab oder legt diese fest.

System_CAPS_pubpropertyReadTimeout

Ruft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Lesevorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest.

System_CAPS_pubpropertyWriteTimeout

Ruft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Schreibvorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest.

NameBeschreibung
System_CAPS_pubmethodBeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Beginnt einen asynchronen Lesevorgang. (Verwenden Sie stattdessen ReadAsync. Weitere Informationen finden Sie im Abschnitt "Hinweise".)

System_CAPS_pubmethodBeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Beginnt einen asynchronen Schreibvorgang. (Verwenden Sie stattdessen WriteAsync. Weitere Informationen finden Sie im Abschnitt "Hinweise".)

System_CAPS_pubmethodClose()

Schließt den aktuellen Stream und gibt alle dem aktuellen Stream zugeordneten Ressourcen frei (z. B. Sockets und Dateihandles). Anstatt diese Methode aufzurufen, stellen Sie sicher, dass der Stream ordnungsgemäß freigegeben wird.

System_CAPS_pubmethodCopyTo(Stream)

Liest alle Bytes aus dem aktuellen Stream und schreibt sie in einen anderen Datenstrom.

System_CAPS_pubmethodCopyTo(Stream, Int32)

Liest alles Bytes aus dem aktuellen Datenstrom und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Datenstrom.

System_CAPS_pubmethodCopyToAsync(Stream)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie in einen anderen Stream.

System_CAPS_pubmethodCopyToAsync(Stream, Int32)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Stream.

System_CAPS_pubmethodCopyToAsync(Stream, Int32, CancellationToken)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung einer angegebenen Puffergröße und eines Abbruchtokens in einen anderen Stream.

System_CAPS_pubmethodCreateObjRef(Type)

Erstellt ein Objekt, das alle relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt verwendet die enthält.(Geerbt von „MarshalByRefObject“.)

System_CAPS_protmethodCreateWaitHandle()

Veraltet. Reserviert ein WaitHandle-Objekt.

System_CAPS_pubmethodDispose()

Gibt alle vom Stream verwendeten Ressourcen frei.

System_CAPS_protmethodDispose(Boolean)

Gibt die von Stream verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei.

System_CAPS_pubmethodEndRead(IAsyncResult)

Wartet, bis der ausstehende asynchrone Lesevorgang abgeschlossen ist. (Verwenden Sie stattdessen ReadAsync. Weitere Informationen finden Sie im Abschnitt "Hinweise".)

System_CAPS_pubmethodEndWrite(IAsyncResult)

Beendet einen asynchronen Schreibvorgang. (Verwenden Sie stattdessen WriteAsync. Weitere Informationen finden Sie im Abschnitt "Hinweise".)

System_CAPS_pubmethodEquals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_protmethodFinalize()

Gibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird.(Geerbt von „Object“.)

System_CAPS_pubmethodFlush()

Löscht beim Überschreiben in einer abgeleiteten Klasse alle Puffer für diesen Stream und veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät.

System_CAPS_pubmethodFlushAsync()

Löscht sämtliche Puffer für diesen Stream asynchron und veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät.

System_CAPS_pubmethodFlushAsync(CancellationToken)

Löscht alle Puffer für diesen Stream asynchron, veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät und überwacht Abbruchanforderungen.

System_CAPS_pubmethodGetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethodGetLifetimeService()

Ruft das Dienstobjekt für aktuellen Lebensdauer, das steuert, die lebensdauerrichtlinie für diese Instanz ab.(Geerbt von „MarshalByRefObject“.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_pubmethodInitializeLifetimeService()

Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab.(Geerbt von „MarshalByRefObject“.)

System_CAPS_protmethodMemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.)

System_CAPS_protmethodMemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject Objekt.(Geerbt von „MarshalByRefObject“.)

System_CAPS_protmethodObjectInvariant()

Veraltet. Diese API unterstützt die Produkt Infrastruktur und sollte nicht direkt aus dem Code verwendet werden. Bietet Unterstützung für einen Contract.

System_CAPS_pubmethodRead(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.

System_CAPS_pubmethodReadAsync(Byte[], Int32, Int32)

Liest eine Bytesequenz asynchron aus dem aktuellen Stream und setzt die Position in diesem Stream um die Anzahl der gelesenen Bytes nach vorn.

System_CAPS_pubmethodReadAsync(Byte[], Int32, Int32, CancellationToken)

Liest eine Folge von Bytes asynchron aus dem aktuellen Stream, erhöht die Position im Stream um die Anzahl der gelesenen Bytes und überwacht Abbruchanfragen.

System_CAPS_pubmethodReadByte()

Liest ein Byte aus dem Stream und erhöht die Position im Stream um ein Byte, oder gibt -1 zurück, wenn das Ende des Streams erreicht ist.

System_CAPS_pubmethodSeek(Int64, SeekOrigin)

Legt beim Überschreiben in einer abgeleiteten Klasse die Position im aktuellen Stream fest.

System_CAPS_pubmethodSetLength(Int64)

Legt beim Überschreiben in einer abgeleiteten Klasse die Länge des aktuellen Streams fest.

System_CAPS_pubmethodSystem_CAPS_staticSynchronized(Stream)

Erstellt um das angegebene Stream-Objekt einen threadsicheren (synchronisierten) Wrapper.

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

System_CAPS_pubmethodWrite(Byte[], Int32, Int32)

Schreibt beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes in den aktuellen Stream und erhöht die aktuelle Position im Stream um die Anzahl der geschriebenen Bytes.

System_CAPS_pubmethodWriteAsync(Byte[], Int32, Int32)

Schreibt eine Bytesequenz asynchron in den aktuellen Stream und setzt die aktuelle Position in diesem Stream um die Anzahl der geschriebenen Bytes nach vorn.

System_CAPS_pubmethodWriteAsync(Byte[], Int32, Int32, CancellationToken)

Schreibt beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes asynchron in den aktuellen Stream und erhöht die aktuelle Position im Stream um die Anzahl der geschriebenen Bytes und überwacht Abbruchanforderungen.

System_CAPS_pubmethodWriteByte(Byte)

Schreibt ein Byte an die aktuellen Position im Stream und erhöht die aktuelle Position im Stream um ein Byte.

NameBeschreibung
System_CAPS_pubfieldSystem_CAPS_staticNull

Ein Stream ohne Sicherungsspeicher.

System_CAPS_noteHinweis

Die .NET Framework-Quellcodes für diesen Typ finden Sie unter der Reference Source. Sie können den Quellcode online Durchsuchen, Referenz für die Offlineanzeige herunterladen und schrittweise durchlaufen (inklusive Patches und Updates) während des Debuggens; see instructions.

Streamist die abstrakte Basisklasse aller Streams. Ein Stream (Datenstream) ist eine Abstraktion einer Folge von Bytes, beispielsweise eine Datei, ein Eingabe-/Ausgabegerät, eine Pipe für die Kommunikation zwischen Prozessen oder ein TCP/IP-Socket. Die Stream Klasse und abgeleitete Klassen stellen eine allgemeine Ansicht dieser verschiedenen Gruppentypen Eingabe-und Ausgabetypen und sodass Programmierer sich nicht den Einzelheiten des Betriebssystems und der zugrunde liegenden Geräte.

Streams umfassen drei grundlegende Vorgänge:

  • Sie können aus Streams lesen. Lesen wird die Übertragung von Daten aus einem Stream in eine Datenstruktur, z. B. ein Array von Bytes.

  • Sie können in Streams schreiben. Schreiben wird die Übertragung von Daten aus einer Datenstruktur in einen Stream.

  • Datenströme können Suchvorgänge unterstützt. Suchvorgänge bezieht sich auf Abfragen und ändern die aktuelle Position im Stream. Seek-Funktion hängt von der Art der Sicherungsspeicher hat ein Datenstrom. Klicken Sie z. B. Netzwerkstreams unterstützen keine einheitliche eine aktuelle Position, und daher in der Regel unterstützen keine Suchvorgänge.

Einige der häufiger häufig verwendete Streams, die von erben Stream sind FileStream, und MemoryStream.

Streams möglicherweise nur einige dieser Funktionen unterstützen, abhängig von der zugrunde liegenden Datenquelle oder vom Repository. Sie können einen Datenstrom, damit seine Funktionen mithilfe von Abfragen die CanRead, CanWrite, und CanSeek Eigenschaften der Stream Klasse.

Die Read und Write Methoden lesen und Schreiben von Daten in einer Vielzahl von Formaten. Verwenden Sie für Datenströme, die Suchvorgänge unterstützt, die Seek und SetLength Methoden und die Position und Length Eigenschaften Abfragen und ändern die aktuelle Position und Länge eines Streams.

Dieser Typ implementiert die IDisposable Schnittstelle. Wenn Sie mithilfe des Typs abgeschlossen haben, sollten Sie es entweder direkt oder indirekt freigeben. Aufrufen, um den Typ direkt zu verwerfen, dessen Dispose Methode in einer try/catch Block. Um es indirekt freizugeben, verwenden Sie ein Sprachkonstrukt z. B. using (in c#) oder Using (in Visual Basic). Weitere Informationen finden Sie im Abschnitt "Verwenden eines Objekts, implementiert IDisposable" in der IDisposable Thema zur Schnittstelle.

Freigeben einer Stream Objekt Leert alle gepufferten Daten, und im Wesentlichen Ruft die Flush Methode für Sie. DisposeBetriebssystem-Ressourcen wie Dateihandles, Netzwerkverbindungen oder Speicher für interne Pufferung verwendet auch frei. Die BufferedStream -Klasse bietet die Möglichkeit, einen anderen Stream um verbessern lesen und schreiben die Leistung einen gepufferten Datenstrom umgebrochen.

Beginnend mit der .NET Framework 4.5die Stream Klasse enthält asynchrone Methoden, um asynchrone Vorgänge zu vereinfachen. Eine asynchrone Methode enthält Async in ihrem Namen, z. B. ReadAsync, WriteAsync, CopyToAsync, und FlushAsync. Diese Methoden können Sie ressourcenintensive e/a-Vorgänge ausführen, ohne den Hauptthread zu blockieren. Diese Überlegungen zur Leistung sind insbesondere in einer Windows 8.x Store-App oder Desktop-App wichtig, bei der ein zeitaufwendiger Streamvorgang den UI-Thread blockieren kann und es dann den Anschein hat, dass Ihre App nicht funktioniert. Die Async-Methoden werden verwendet, in Verbindung mit der async und await in Visual Basic und C#-Schlüsselwörter.

Bei der Verwendung in einem Windows 8.x Store app Stream enthält zwei Erweiterungsmethoden: AsInputStream und AsOutputStream. Diese Methoden wandeln eine Stream Objekt in einen Stream in den Windows-Runtime. Sie können auch einen Stream in Konvertieren der Windows-Runtime zu eine Stream -Objekt mithilfe der AsStreamForRead und AsStreamForWrite Methoden. Weitere Informationen finden Sie unter Gewusst wie: Konvertieren zwischen .NET Framework-Streams und Windows-Runtime-Streams

Einige datenstromimplementierungen führen lokalen Pufferung von der zugrunde liegenden Daten zur Verbesserung der Leistung. Für solche Datenströme, können Sie die Flush oder FlushAsync Methode, um alle internen Puffer zu löschen, und stellen Sie sicher, dass alle Daten auf dem zugrunde liegenden Datenquelle oder das Repository geschrieben wurden.

Wenn Sie einen Stream ohne Sicherungsspeicher (auch bekannt als Bitbucket), verwenden die Null Feld, das eine Instanz eines Datenstroms abgerufen, die für diesen Zweck entwickelt wurde.

Hinweise für Implementierer:

Wenn Sie eine abgeleitete Klasse implementieren Stream, müssen Sie angeben, die Implementierungen für die Read und Write Methoden. Die asynchronen Methoden ReadAsync, WriteAsync, und CopyToAsync verwenden Sie die synchronen Methoden Read und Write in ihren Implementierungen. Aus diesem Grund wird die Implementierung von Read und Write funktionieren ordnungsgemäß mit der asynchronen Methoden. Die standardmäßigen Implementierungen von ReadByte und WriteByte erstellen Sie ein neues Einzelelement-Bytearray, und rufen Sie dann Ihre Implementierungen von Read und Write. Beim Ableiten von Stream, es wird empfohlen, die Sie überschreiben diese Methoden, um den internen Puffer zugreifen, wenn Sie eine erheblich bessere Leistung haben. Sie müssen auch Implementierungen der bereitstellen CanRead, CanSeek, CanWrite, Flush, Length, Position, Seek, und SetLength.

Überschreiben Sie nicht die Close -Methode, stattdessen werden alle der Stream Bereinigungslogik in die Dispose Methode. Weitere Informationen finden Sie unter Implementieren einer Dispose-Methode.

Im folgenden Beispiel wird veranschaulicht, wie zwei FileStream -Objekten, die Dateien asynchron aus einem Verzeichnis in ein anderes Verzeichnis zu kopieren. Die FileStream-Klasse wird aus der Stream-Klasse abgeleitet. Beachten Sie, dass der Click-Ereignishandler für das Button-Steuerelement mit dem async-Modifizierer markiert wird, da er eine asynchrone Methode aufruft.

using System;
using System.Threading.Tasks;
using System.Windows;
using System.IO;

namespace WpfApplication
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            string StartDirectory = @"c:\Users\exampleuser\start";
            string EndDirectory = @"c:\Users\exampleuser\end";

            foreach (string filename in Directory.EnumerateFiles(StartDirectory))
            {
                using (FileStream SourceStream = File.Open(filename, FileMode.Open))
                {
                    using (FileStream DestinationStream = File.Create(EndDirectory + filename.Substring(filename.LastIndexOf('\\'))))
                    {
                        await SourceStream.CopyToAsync(DestinationStream);
                    }
                }
            }
        }
    }
}

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: