Stream Klasse
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

 

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

Um den .NET Framework-Quellcode für diesen Typ zu durchsuchen, 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 erforderlich sind.(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, 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 die aktuellen Service-Objekt, das die Lebensdauerrichtlinien für diese Instanz steuert.(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 Lebensdauerrichtlinien 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 producto-Infrastruktur und sollte nicht direkt aus Ihrem 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.

Stream ist 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 deren abgeleitete Klassen stellen eine allgemeine Ansicht der verschiedenen Typen von Eingabe und Ausgabe und Programmierer sich nicht mit den Einzelheiten des Betriebssystems und der zugrunde liegenden Geräte isolieren.

Streams umfassen drei grundlegende Vorgänge:

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

  • Sie können in Datenströme schreiben. Schreiben von ist die Übertragung von Daten aus einer Datenstruktur in einen Stream.

  • Streams können Suchvorgänge unterstützen. Suchvorgänge bezieht sich auf Abfragen und ändern die aktuelle Position im Stream. Seek-Funktion hängt von der Art des Sicherungsspeichers eines Streams. Z. B. Netzwerkstreams haben kein einheitliches Konzept einer aktuellen Position und daher in der Regel unterstützen keine Suchvorgänge.

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

Abhängig von der zugrunde liegenden Datenquelle oder vom Repository unterstützen Streams nur einige dieser Funktionen. Sie können die Funktionen ein Streams mithilfe von Abfragen der 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 Streams, 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 mit dem Datentyp haben, sollten Sie es entweder direkt oder indirekt freigeben. Damit des Typs direkt freigegeben werden, rufen Sie seine Dispose -Methode in eine try/catch Block. Verwenden, um es indirekt freigegeben werden, z. B. ein Sprachkonstrukt using (in c#) oder Using (in Visual Basic). Weitere Informationen finden Sie im Abschnitt "Verwenden eines Objekts, die implementiert IDisposable" in der IDisposable Thema zur Schnittstelle.

Freigeben einer Stream Objekt Leert alle gepufferten Daten und ruft im Wesentlichen die Flush Methode für Sie. Dispose gibt auch Ressourcen wie Dateihandles, Netzwerkverbindungen oder für die interne Pufferung verwendete Arbeitsspeicher des Betriebssystems frei. Die BufferedStream -Klasse bietet die Möglichkeit, einen anderen Stream lesen und Schreiben der Leistung einen gepufferten Stream umgebrochen.

Beginnend mit der .NET Framework 4.5, der Stream Klasse enthält die 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 asynchronen Methoden wird 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 ein Stream Objekt in einen Stream in den Windows-Runtime. Sie können auch einen Stream in konvertieren die Windows-Runtime zu ein 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 Implementierungen Stream Ausführen lokaler Pufferung der zugrunde liegenden Daten zur Verbesserung der Leistung. Für solche Streams können Sie die Flush oder FlushAsync Methode, um die internen Puffer löschen und sicherstellen, dass alle Daten in die zugrunde liegende Datenquelle oder das Repository geschrieben wurde.

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

Hinweise zur Implementierung:

Bei der Implementierung einer abgeleiteten Klasse von Stream, geben Sie Implementierungen für die Read und Write Methoden. Die asynchronen Methoden ReadAsync, WriteAsync, und CopyToAsync verwenden die synchronen Methoden Read und Write in ihren Implementierungen. Aus diesem Grund wird die Implementierung von Read und Write funktionieren ordnungsgemäß mit den asynchronen Methoden. Die standardimplementierungen ReadByte und WriteByte Erstellen Sie ein neues Bytearray von einem Element, und rufen Sie dann die Implementierung von Read und Write. Beim Ableiten von Stream, es wird empfohlen, dass Sie diese Methoden, um den internen Puffer zugreifen, wenn Sie eine erheblich bessere Leistung haben außer Kraft setzen. Sie müssen auch angeben, die Implementierung von CanRead, CanSeek, CanWrite, Flush, Length, Position, Seek, und SetLength.

Überschreiben Sie nicht die Close -Methode, fügen Sie stattdessen alle die Stream Bereinigungslogik in die Dispose Methode. Weitere Informationen finden Sie unter Implementing a Dispose Method.

Im folgenden Beispiel wird veranschaulicht, wie zwei FileStream -Objekten, die 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);
                    }
                }
            }
        }
    }
}

Universal Windows Platform
Verfügbar seit 4.5
.NET Framework
Verfügbar seit 1.1
Portable Class Library
Unterstützt in: portable .NET platforms
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1

Öffentliche statische (in Visual Basic freigegebene) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Zurück zum Anfang
Anzeigen:
© 2016 Microsoft