Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.
Verwenden Sie die FileStream Klasse zum Lesen, Schreiben in, Öffnen und Schließen von Dateien in einem Dateisystem und zum Bearbeiten anderer dateibezogener Betriebssystemhandles, einschließlich Rohren, Standardeingaben und Standardausgabe. Sie können die Methoden Read, Write, CopyTo und Flush verwenden, um synchrone Vorgänge auszuführen, oder die Methoden ReadAsync, WriteAsync, CopyToAsync und FlushAsync, um asynchrone Vorgänge auszuführen. Verwenden Sie die asynchronen Methoden, um ressourcenintensive Dateivorgänge auszuführen, ohne den Hauptthread zu blockieren. Diese Leistungsüberlegung ist in einer Windows 8.x Store-App oder Desktop-App besonders wichtig, bei der ein zeitaufwendiger Streamvorgang den UI-Thread blockieren und ihre App so erscheinen lässt, als ob sie nicht funktioniert. FileStream puffert Eingaben und Ausgaben, um eine bessere Leistung zu erzielen.
Von Bedeutung
Dieser Typ implementiert die IDisposable Schnittstelle. Nach Abschluss der Verwendung sollten Sie den Typ entweder direkt oder indirekt löschen. Rufen Sie die Methode Dispose in einem try
/catch
-Block auf, um den Typ direkt zu entsorgen. Verwenden Sie zum indirekten Löschen ein Sprachkonstrukt wie using
(in C#) oder Using
(in Visual Basic). Weitere Informationen finden Sie im Abschnitt "Verwenden eines Objekts, das IDisposable implementiert" im IDisposable Schnittstellenthema.
Die IsAsync Eigenschaft erkennt, ob das Dateihandle asynchron geöffnet wurde. Sie geben diesen Wert an, wenn Sie eine Instanz der Klasse mithilfe eines Konstruktors erstellen, der über einen FileStream, isAsync
oder useAsync
Parameter verfügt. Wenn die Eigenschaft lautet true
, verwendet der Datenstrom überlappende E/A, um Dateivorgänge asynchron auszuführen. Jedoch muss die IsAsync Eigenschaft nicht true
sein, um die ReadAsync, WriteAsync oder CopyToAsync Methode aufzurufen. Wenn die IsAsync Eigenschaft ist false
und Sie die asynchronen Lese- und Schreibvorgänge aufrufen, wird der UI-Thread immer noch nicht blockiert, aber der tatsächliche E/A-Vorgang wird synchron ausgeführt.
Die Seek Methode unterstützt den zufälligen Zugriff auf Dateien. Seek ermöglicht das Verschieben der Lese-/Schreibposition an eine beliebige Position innerhalb der Datei. Dies erfolgt mit Byte-Offset-Referenzpunktparametern. Der Byteoffset ist relativ zum Suchbezugspunkt, der den Anfang, die aktuelle Position oder das Ende der zugrunde liegenden Datei sein kann, wie durch die drei Bestandteile der SeekOrigin-Enumeration dargestellt.
Hinweis
Datenträgerdateien unterstützen immer den zufälligen Zugriff. Zum Zeitpunkt der Konstruktion wird der CanSeek Eigenschaftswert auf true
oder false
abhängig vom zugrunde liegenden Dateityp festgelegt. Wenn der zugrunde liegende Dateityp FILE_TYPE_DISK ist, wie in winbase.h definiert, ist der Eigenschaftswert CanSeektrue
. Der Wert ist, wenn der Eigenschaftswert CanSeek ist, andernfalls false
.
Wenn ein Prozess mit einem Teil einer gesperrten Datei beendet wird oder eine Datei mit ausstehenden Sperren schließt, ist das Verhalten unbestimmt.
Informationen zu Verzeichnisvorgängen und anderen Dateivorgängen finden Sie unter " File, Directory" und Path "Klassen". Die File Klasse ist eine Hilfsklasse mit statischen Methoden für die Erstellung von FileStream Objekten basierend auf Dateipfaden. Die MemoryStream Klasse erstellt einen Datenstrom aus einem Bytearray und ähnelt der FileStream Klasse.
Eine Liste allgemeiner Datei- und Verzeichnisvorgänge finden Sie unter "Allgemeine E/A-Aufgaben".
Erkennung von Streampositionsänderungen
Wenn ein FileStream Objekt keinen exklusiven Haltepunkt für das Handle besitzt, kann ein anderer Thread gleichzeitig auf das Dateihandle zugreifen und die Position des Dateizeigers des Betriebssystems ändern, der dem Dateihandle zugeordnet ist. In diesem Fall kann die zwischengespeicherte Position im FileStream Objekt und die zwischengespeicherten Daten im Puffer kompromittiert werden. Das FileStream Objekt führt routinemäßig Überprüfungen von Methoden durch, die auf den zwischengespeicherten Puffer zugreifen, um sicherzustellen, dass die Handleposition des Betriebssystems mit der vom Objekt verwendeten FileStream zwischengespeicherten Position übereinstimmt.
Wenn in einem Aufruf der Read Methode eine unerwartete Änderung der Handleposition erkannt wird, verwirft .NET den Inhalt des Puffers und liest den Datenstrom erneut aus der Datei. Dies kann sich auf die Leistung auswirken, abhängig von der Größe der Datei und anderen Prozessen, die sich auf die Position des Dateidatenstroms auswirken könnten.
Wenn eine unerwartete Änderung der Handleposition in einem Aufruf der Write Methode erkannt wird, wird der Inhalt des Puffers verworfen und eine IOException Ausnahme ausgelöst.
Ein FileStream Objekt hat keinen exklusiven Zugriff auf sein Handle, wenn entweder die SafeFileHandle Eigenschaft aufgerufen wird, um das Handle freizugeben, oder dem FileStream Objekt die SafeFileHandle Eigenschaft im Konstruktor zugewiesen wird.