Datei- und Stream-E/A

Datei- und Stream-E/A (Eingabe/Ausgabe) bezieht sich auf die Übertragung von Daten auf ein oder von einem Speichermedium. In .NET Framework enthalten die System.IO-Namespaces Typen, die das synchrone und asynchrone Lesen und Schreiben in Datenstreams und Dateien ermöglichen. Diese Namespaces enthalten zudem Typen für die Komprimierung und Dekomprimierung von Dateien sowie Typen für die Kommunikation über Pipes und serielle Anschlüsse.

Eine Datei ist eine geordnete, mit einem Namen versehene Auflistung von dauerhaft gespeicherten Bytes. Beim Umgang mit Dateien arbeiten Sie mit Verzeichnispfaden, Datenträgern sowie mit Datei- und Verzeichnisnamen. Im Unterschied dazu, handelt es sich bei einem Stream um eine Sequenz von Bytes, die zum Lesen von und zum Schreiben in einen Sicherungsspeicher verwendet wird, für den unterschiedliche Speichermedien (z. B. Festplatten oder Arbeitsspeicher) verwendet werden können. Ebenso wie es neben Festplatten mehrere andere Sicherungsspeicher gibt, gibt es neben Dateistreams zusätzlich Netzwerk-, Speicher- und Pipestreams.

Sie können die Typen im System.IO-Namespace verwenden, um mit Dateien und Verzeichnissen zu interagieren. Beispielsweise können Sie Eigenschaften für Dateien und Verzeichnisse abrufen und festlegen oder Auflistungen von Dateien und Verzeichnissen anhand von Suchkriterien abrufen.

Im Folgenden sind einige häufig verwendete Datei- und Verzeichnisklassen aufgeführt:

  • File – stellt statische Methoden zum Erstellen, Kopieren, Löschen, Verschieben und Öffnen von Dateien zur Verfügung und unterstützt das Erstellen eines FileStream-Objekts.

  • FileInfo – stellt Instanzmethoden zum Erstellen, Kopieren, Löschen, Verschieben und Öffnen von Dateien zur Verfügung und unterstützt das Erstellen eines FileStream-Objekts.

  • Directory – stellt statische Methoden zum Erstellen, Verschieben und Auflisten von Verzeichnissen und Unterverzeichnissen zur Verfügung.

  • DirectoryInfo – stellt Instanzmethoden zum Erstellen, Verschieben und Auflisten von Verzeichnissen und Unterverzeichnissen zur Verfügung.

  • Path – stellt Methoden und Eigenschaften für die plattformübergreifende Verarbeitung von Verzeichniszeichenfolgen zur Verfügung.

Neben der Verwendung dieser Klassen können Benutzer von Visual Basic die von der Microsoft.VisualBasic.FileIO.FileSystem-Klasse für Datei-E/A-Vorgänge bereitgestellten Methoden und Eigenschaften verwenden.

Siehe Gewusst wie: Kopieren von Verzeichnissen, Gewusst wie: Erstellen einer Verzeichnisauflistung und Gewusst wie: Auflisten von Verzeichnissen und Dateien.

Die abstrakte Stream-Basisklasse unterstützt das Lesen und Schreiben von Bytes. Alle Klassen, die Streams darstellen, erben von der Stream-Klasse. Die Stream-Klasse und die davon abgeleiteten Klassen stellen eine allgemeine Ansicht von Datenquellen und Repositorys bereit, sodass Programmierer sich nicht mit den Einzelheiten des Betriebssystems und der jeweiligen Geräte befassen müssen.

Streams umfassen drei grundlegende Vorgänge:

  • Lesen – Übertragen der Daten von einem Stream in eine Datenstruktur, beispielsweise in ein Bytearray.

  • Schreiben – Übertragen von Daten aus einer Datenquelle in einen Stream.

  • Suchen – Abfragen und bearbeiten der aktuellen Position innerhalb eines Streams.

Abhängig von der zugrunde liegenden Datenquelle oder vom Repository unterstützt ein Stream möglicherweise nur einige dieser Funktionen. Die PipeStream-Klasse unterstützt beispielsweise keine Suchvorgänge. Die CanRead-, CanWrite- und CanSeek-Eigenschaften eines Stream geben die Vorgänge an, die vom Stream unterstützt werden.

Im Folgenden sind einige häufig verwendete Streamklassen aufgeführt:

  • FileStream – Lesen und Schreiben in einer Datei.

  • IsolatedStorageFileStream – Lesen und Schreiben in einer Datei im isolierten Speicher.

  • MemoryStream – Lesen und Schreiben im Arbeitsspeicher als Sicherungsspeicher.

  • BufferedStream – Verbessern der Leistung von Lese- und Schreibvorgängen.

  • NetworkStream – Lesen und Schreiben über Netzwerksockets.

  • PipeStream – Lesen und Schreiben über anonyme und benannte Pipes.

  • CryptoStream – Verknüpfen von Datenstreams mit kryptografischen Transformationen.

Ein Beispiel für das asynchrone Arbeiten mit Streams finden Sie unter Asynchrone Datei-E/A.

Der System.IO-Namespace stellt zudem Typen zum Lesen und Schreiben von codierten Zeichen in Streams bereit. Normalerweise werden Streams für die Eingabe und Ausgabe von Bytes verwendet. Die Reader- und Writer-Typen übernehmen die Konvertierung der codierten Zeichen in Bytes und umgekehrt, sodass der Vorgang im Stream abgeschlossen werden kann. Jede Reader- und Writer-Klasse ist einem Stream zugeordnet, der durch die BaseStream-Eigenschaft der Klasse abgerufen werden kann.

Im Folgenden werden einige häufig verwendete Reader- und Writer-Klassen aufgeführt:

  • BinaryReader und BinaryWriter – Lesen und Schreiben von primitiven Datentypen als Binärwerte.

  • StreamReader und StreamWriter – Lesen und Schreiben von Zeichen mithilfe eines Codierungswerts, der die Zeichen in Bytes konvertiert und umgekehrt.

  • StringReader und StringWriter -– Lesen und Schreiben von Zeichen in und aus Zeichenfolgen.

  • TextReader und TextWriter – abstrakte Basisklassen für andere Reader und Writer, die Zeichen und Zeichenfolgen, jedoch keine Binärdaten, lesen und schreiben.

Siehe Gewusst wie: Lesen aus einer Textdatei, Gewusst wie: Schreiben von Text in eine Datei, Gewusst wie: Lesen von Zeichen aus einer Zeichenfolge und Gewusst wie: Schreiben von Zeichen in eine Zeichenfolge.

Das Lesen oder Schreiben einer großen Datenmenge kann ressourcenintensiv sein. Damit Ihre Anwendung weiterhin auf Benutzerinteraktionen reagiert, sollten Sie diese Aufgaben asynchron ausführen. Bei synchronen E/A-Vorgängen wird der UI-Thread blockiert, bis der ressourcenintensive Vorgang abgeschlossen ist. Verwenden Sie beim Entwickeln von Windows Store-Apps asynchrone E/A-Vorgänge, damit nicht der Eindruck erweckt wird, dass Ihre App nicht mehr reagiert.

Die asynchronen Member enthalten den Begriff Async in ihren Namen, z. B. die Methoden CopyToAsync, FlushAsync, ReadAsync und WriteAsync. Diese Methoden müssen mit den Schlüsselwörtern async und await verwendet werden.

Weitere Informationen finden Sie unter Asynchrone Datei-E/A.

Komprimierung bezieht sich auf das Verkleinern einer Datei zum Zweck der Speicherung. Bei einer Dekomprimierung wird der Inhalt einer komprimierten Datei extrahiert und in ein verwendbares Format gebracht. Der System.IO.Compression-Namespace enthält Typen zum Komprimieren und Dekomprimieren von Dateien und Streams.

Die folgenden Klassen werden häufig zum Komprimieren und Dekomprimieren von Dateien und Streams verwendet:

  • ZipArchive – Erstellen und Abrufen von Einträgen im ZIP-Archiv.

  • ZipArchiveEntry – Darstellen einer komprimierten Datei.

  • ZipFile – Erstellen, Extrahieren und Öffnen eines komprimierten Pakets.

  • ZipFileExtensions – Erstellen und Extrahieren von Einträgen in einem komprimierten Paket.

  • DeflateStream – Komprimieren und Dekomprimieren von Streams mit dem Deflate-Algorithmus.

  • GZipStream – Komprimieren und Dekomprimieren von Streams im gzip-Datenformat.

Siehe Gewusst wie: Komprimieren und Extrahieren von Dateien.

Isolierte Speicherung ist ein Mechanismus zur Datenspeicherung, der Isolation und Sicherheit gewährleistet. Dies wird durch die Definition standardisierter Verknüpfungen von Code mit gespeicherten Daten ermöglicht. Der Speicher enthält ein virtuelles Dateisystem, das nach Benutzer, Assembly und Domäne (optional) isoliert ist. Ein isolierter Speicher ist besonders nützlich, wenn Ihre Anwendung keine Berechtigung für den Zugriff auf Benutzerdateien hat. Sie können die Einstellungen oder Dateien für die Anwendung so speichern, dass eine Kontrolle durch die Sicherheitsrichtlinien des Computers gewährleistet ist.

Die isolierte Speicherung ist für Windows Store-Apps nicht verfügbar. Verwenden Sie stattdessen Anwendungsdatenklassen im Windows.Storage-Namespace. Weitere Informationen finden Sie im Windows Developer Center unter Anwendungsdaten.

Die folgenden Klassen werden häufig zum Implementieren isolierter Speicher verwendet:

Siehe Isolierte Speicherung.

Das .NET für Windows Store-Apps enthält viele der Typen zum Lesen und Schreiben in Streams. Jedoch sind nicht alle E/A-Typen von .NET Framework verfügbar.

Beachten Sie jedoch die folgenden wichtigen Unterschiede, wenn Sie E/A-Vorgänge in Windows Store-Apps verwenden:

Sie können .NET Framework-Streams in Windows-Runtime-Streams konvertieren und umgekehrt, falls erforderlich. Weitere Informationen finden Sie unter Gewusst wie: Konvertieren zwischen .NET Framework-Streams und Windows-Runtime-Streams oder WindowsRuntimeStreamExtensions.

Weitere Informationen zu E/A-Vorgängen in einer Windows Store-App finden Sie im Windows Developer Center unter Schnellstart: Lesen und Schreiben einer Datei.

Wenn Sie die Klassen im System.IO-Namespace verwenden, müssen die Sicherheitsanforderungen des Betriebssystems erfüllt sein, z. B. Zugriffssteuerungslisten (ACLs), um den Zugriff auf Dateien und Verzeichnisse zu steuern. Dies gilt zusätzlich zu anderen FileIOPermission-Anforderungen. ACLs können programmgesteuert verwaltet werden. Weitere Informationen finden Sie unter Gewusst wie: Hinzufügen oder Entfernen von Zugriffssteuerungslisten-Einträgen und Übersicht über die ACL-Technologie.

Standardsicherheitsrichtlinien verhindern den Zugriff von Internet- oder Intranetanwendungen auf Dateien, die sich auf dem Computer des Benutzers befinden. Verwenden Sie daher beim Schreiben von Code, der über das Internet oder Intranet heruntergeladen wird, keine E/A-Klassen, für die ein Pfad zu einer physischen Datei erforderlich ist. Verwenden Sie stattdessen für herkömmliche .NET Framework-Anwendungen die isolierte Speicherung oder Anwendungsdaten für Windows Store-Apps.

Eine Sicherheitsüberprüfung wird nur beim Erstellen des Streams ausgeführt. Übergeben Sie daher keinen geöffneten Stream an weniger vertrauenswürdigen Code oder an Anwendungsdomänen.

Titel

Beschreibung

Allgemeine E/A-Aufgaben

Stellt eine Liste von E/A-Aufgaben bereit, die Dateien, Verzeichnissen und Streams zugeordnet sind, und verknüpft jede Aufgabe mit relevanten Inhalten und Beispielen.

Asynchrone Datei-E/A

Beschreibt die Leistungsvorteile und den grundlegenden Ablauf der asynchronen E/A.

Isolierte Speicherung

Beschreibt einen Mechanismus zur Datenspeicherung, der durch Definition einer standardisierten Zuordnung von Code zu gespeicherten Daten Isolierung und Sicherheit gewährleistet.

Pipeoperationen in .NET Framework

Beschreibt anonyme und benannte Pipevorgänge im .NET Framework.

Speicherabbilddateien

Beschreibt Speicherabbilddateien, die den Inhalt von Dateien auf dem Datenträger im virtuellen Arbeitsspeicher enthalten. Sie können Speicherabbilddateien verwenden, um sehr große Dateien zu bearbeiten und gemeinsam genutzten Speicherbereich für die prozessübergreifende Kommunikation zu erstellen.

Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft