(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Stream-Klasse

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

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

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

Der Stream-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Geschützte MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsStreamInitialisiert eine neue Instanz der Stream-Klasse.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsCanReadRuft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob der aktuelle Stream Lesevorgänge unterstützt.
Öffentliche EigenschaftUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsCanSeekRuft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob der aktuelle Stream Suchvorgänge unterstützt.
Öffentliche EigenschaftUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsCanTimeoutRuft einen Wert ab, der bestimmt, ob für den aktuellen Stream ein Timeout möglich ist.
Öffentliche EigenschaftUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsCanWriteRuft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob der aktuelle Stream Schreibvorgänge unterstützt.
Öffentliche EigenschaftUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsLengthRuft beim Überschreiben in einer abgeleiteten Klasse die Länge des Streams in Bytes ab.
Öffentliche EigenschaftUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsPositionRuft beim Überschreiben in einer abgeleiteten Klasse die Position im aktuellen Stream ab oder legt diese fest.
Öffentliche EigenschaftUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsReadTimeoutRuft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Lesevorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest.
Öffentliche EigenschaftUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsWriteTimeoutRuft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Schreibvorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest.
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekBeginReadBeginnt einen asynchronen Lesevorgang. (Verwenden Sie stattdessen die ReadAsync-Methode. Weitere Informationen finden Sie im Abschnitt "Hinweise".)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekBeginWriteBeginnt einen asynchronen Schreibvorgang. (Verwenden Sie stattdessen WriteAsync. Weitere Informationen finden Sie im Abschnitt "Hinweise".)
Öffentliche MethodeUnterstützt von XNA FrameworkCloseSchließ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.
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsCopyTo(Stream)Liest alle Bytes aus dem aktuellen Stream und schreibt sie in einen anderen Datenstrom.
Öffentliche MethodeUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsCopyTo(Stream, Int32)Liest alles Bytes aus dem aktuellen Datenstrom und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Datenstrom.
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsCopyToAsync(Stream)Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie in einen anderen Stream.
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsCopyToAsync(Stream, Int32)Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Stream.
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsCopyToAsync(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.
Öffentliche MethodeCreateObjRefErstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind. (Von MarshalByRefObject geerbt.)
Geschützte MethodeUnterstützt von XNA FrameworkCreateWaitHandle Veraltet. Reserviert ein WaitHandle-Objekt.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsDispose()Gibt sämtliche vom Stream verwendeten Ressourcen frei.
Geschützte MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsDispose(Boolean)Gibt die vom Stream verwendeten nicht verwalteten Ressourcen und optional auch die verwalteten Ressourcen frei.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekEndReadWartet, bis der ausstehende asynchrone Lesevorgang abgeschlossen ist. (Verwenden Sie stattdessen die ReadAsync-Methode. Weitere Informationen finden Sie im Abschnitt "Hinweise".)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekEndWriteBeendet einen asynchronen Schreibvorgang. (Verwenden Sie stattdessen WriteAsync. Weitere Informationen finden Sie im Abschnitt "Hinweise".)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsEquals(Object)Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Von Object geerbt.)
Geschützte MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsFlushLö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.
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsFlushAsync()Löscht sämtliche Puffer für diesen Stream asynchron und veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät.
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsFlushAsync(CancellationToken)Löscht alle Puffer für diesen Stream asynchron und veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät und überwacht Abbruchanforderungen.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetHashCodeFungiert als die Standardhashfunktion. (Von Object geerbt.)
Öffentliche MethodeGetLifetimeServiceRuft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert. (Von MarshalByRefObject geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche MethodeInitializeLifetimeServiceRuft ein Lebensdauerdienstobjekt ab, mit dem die Lebensdauerrichtlinien für diese Instanz gesteuert werden können. (Von MarshalByRefObject geerbt.)
Geschützte MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsMemberwiseClone()Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Geschützte MethodeMemberwiseClone(Boolean)Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts. (Von MarshalByRefObject geerbt.)
Geschützte MethodeObjectInvariantInfrastruktur. Veraltet. Bietet Unterstützung für das Contract.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsReadLiest 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.
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsReadAsync(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.
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsReadAsync(Byte[], Int32, Int32, CancellationToken)Liest eine Folge von Bytes asynchron aus aktuellen Stream, erhöht die Position im Stream um die Anzahl der gelesenen Bytes und überwacht Abbruchanfragen.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsReadByteLiest 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.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsSeekLegt beim Überschreiben in einer abgeleiteten Klasse die Position im aktuellen Stream fest.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsSetLengthLegt beim Überschreiben in einer abgeleiteten Klasse die Länge des aktuellen Streams fest.
Öffentliche MethodeStatischer MemberSynchronizedErstellt um das angegebene Stream-Objekt einen threadsicheren (synchronisierten) Wrapper.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsWriteSchreibt 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.
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsWriteAsync(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.
Öffentliche MethodeUnterstützt in .NET für Windows Store-AppsWriteAsync(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.
Öffentliche MethodeUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsWriteByteSchreibt ein Byte an die aktuellen Position im Stream und erhöht die aktuelle Position im Stream um ein Byte.
Zum Seitenanfang

  NameBeschreibung
Öffentliche ErweiterungsmethodeUnterstützt in .NET für Windows Store-AppsAsInputStreamKonvertiert einen verwalteten Stream in .NET für Windows Store-Apps zu einem Eingabestream in Windows-Runtime. (Durch WindowsRuntimeStreamExtensions definiert.)
Öffentliche ErweiterungsmethodeUnterstützt in .NET für Windows Store-AppsAsOutputStreamKonvertiert einen verwalteten Stream in .NET für Windows Store-Apps zu einem Ausgabestream in Windows-Runtime. (Durch WindowsRuntimeStreamExtensions definiert.)
Zum Seitenanfang

  NameBeschreibung
Öffentliches FeldStatischer MemberUnterstützt von XNA FrameworkUnterstützt von Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsNullEin Stream ohne Sicherungsspeicher.
Zum Seitenanfang

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 Typen der Eingabe und der Ausgabe und Isolieren den Programmierer von bestimmten Informationen des Betriebssystems und der zugrunde liegenden Geräte.

Streams umfassen drei grundlegende Vorgänge:

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

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

  • Streams können Suchvorgänge unterstützen. Das Suchen verweist das Abfragen und Ändern der aktuellen Position in einem Stream an. 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.

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

Abhängig von der zugrunde liegenden Datenquelle oder vom Repository unterstützen Streams möglicherweise nur einige dieser Funktionen. Sie können einen Stream für seine Funktionen abfragen, indem Sie CanRead, CanWrite, CanSeek und Eigenschaften der Stream-Klasse.

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.

Dieser Typ implementiert die IDisposable-Schnittstelle. Wenn die Verwendung des Typs haben, sollten Sie diesen direkt oder indirekt entweder freigeben. Um den Typ direkt zu löschen, rufen Sie die Dispose-Methode in einem try/catch-Block auf. So zeigen ihn indirekt freizugeben, verwenden Sie ein Sprachkonstrukt wie using (in C#) oder Using (in Visual Basic). Weitere Informationen finden Sie im Abschnitt "Verwenden eines Objekts, das Abschnitt IDisposable" im IDisposable-Schnittstellenthema implementiert.

Für das Freigeben eines Stream-Objekts leert alle gepufferten Daten und ruft im Prinzip die Flush-Methode für Sie auf. Dispose gibt auch Betriebssystemressourcen z. B. Dateihandles, Netzwerkverbindungen oder den Arbeitsspeicher frei, der für eine interne Pufferung verwendet wurde. Durch die BufferedStream-Klasse kann ein gepufferter Stream Wrapper eines anderen Streams werden, sodass die Lese- und Schreibleistung verbessert wird.

Ab .NET Framework 4.5, enthält die Stream-Klasse asynchrone Methoden, um asynchrone Vorgänge zu vereinfachen. Eine asynchrone Methode enthält Async in ihrem Namen, wie ReadAsync, WriteAsync, CopyToAsync und FlushAsync. Diese Methoden ermöglichen es Ihnen, ressourcenintensive E/A-Vorgänge auszuführen, ohne den Hauptthread zu blockieren. Diese Überlegungen zur Leistung sind insbesondere in einer Windows 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 werden in Verbindung mit den Schlüsselwörtern async und await in Visual Basic und in C#.

Wenn es in einer App Windows Store verwendet wird, enthält Stream zwei Erweiterungsmethoden ein: AsInputStream und AsOutputStream. Diese Methoden konvertieren ein Stream-Objekt zu einem Stream in Windows-Runtime. Sie können einen Stream in Windows-Runtime auf ein Stream-Objekt auch konvertieren, indem Sie die Methoden AsStreamForRead und AsStreamForWrite. Weitere Informationen finden Sie unter Gewusst wie: Konvertieren zwischen .NET Framework-Streams und Windows-Runtime-Streams

Einige der Implementierungen von Streams speichern die zugrunde liegenden Daten lokal im Puffer, um die Leistung zu verbessern. Zum Ausführen solcher Streams können Sie die Methode Flush oder FlushAsync verwenden, um alle internen Puffer zu löschen und sicherzustellen, dass alle Daten in der zugrunde liegenden Datenquelle oder das Repository geschrieben wurden.

Wenn Sie einen Stream ohne Sicherungsspeicher (auch als Bitbucket) benötigen, verwenden Sie das Null Feld, um eine Instanz eines Streams abzurufen, der zu diesem Zweck entworfen wurde.

Hinweise zur Implementierung

Wenn Sie eine von Stream abgeleitete Klasse implementieren, müssen Sie Implementierungen für die Read und Write-Methoden bereitstellen. Die asynchronen Methoden ReadAsync, WriteAsync und CopyToAsync verwenden die synchronen Methoden Read und Write in ihren Implementierungen. Daher eignen die Implementierungen von Read und Write korrekt mit 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, wird empfohlen, diese Methoden überschreiben, um auf den internen Puffer, wenn ein Zugriff verfügen, für erheblich die Leistung verbessert. Stellen Sie Implementierungen von CanRead, CanSeek, CanWrite, Flush, Length, Position, Seek und SetLength bereit.

Überschreiben Sie die Close-Methode, legen Sie stattdessen die gesamte Stream Bereinigungslogik in die Dispose-Methode ein. Weitere Informationen finden Sie unter Implementieren einer Dispose-Methode.

TopicLocation
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

Das folgende Beispiel zeigt, wie zwei FileStream-Objekte verwendet, um die Dateien aus einem Verzeichnis in ein anderes Verzeichnis asynchron 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);
                    }
                }
            }
        }
    }
}


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

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

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft