Grundlagen zu Datei-E/A-Vorgängen und dem Dateisystem in .NET Framework (Visual Basic)
Der System.IO-Namespace enthält die Klassen File und Directory, die die .NET Framework-Funktionalität zum Arbeiten mit Dateien und Verzeichnissen bereitstellen. Da alle Methoden dieser Klassen statische oder freigegebene Member sind, können Sie diese direkt verwenden, ohne zuerst eine Instanz der Klasse zu erstellen. Im Zusammenhang mit diesen Klassen stehen die FileInfo-Klasse und die DirectoryInfo-Klasse, die Benutzern des My-Features bereits bekannt sein werden. Beim Einsatz dieser Klassen müssen Sie vollqualifizierte Namen verwenden oder am Anfang des betreffenden Codeabschnitts mit Imports-Anweisungen die relevanten Namespaces importieren. Weitere Informationen finden Sie unter Imports-Anweisung (.NET-Namespace und Typ).
Definition eines Streams
Bei .NET Framework werden Streams zum Lesen und Schreiben von Dateien verwendet. Sie können sich einen Stream als eindimensionale Menge zusammenhängender Daten vorstellen, die über einen Anfang und ein Ende verfügt und bei der der Cursor die aktuelle Position im Stream angibt.
Streamoperationen
Die im Stream enthaltenen Daten können aus dem Arbeitsspeicher, einer Datei oder einem TCP/IP-Socket stammen. Für Streams sind einige grundlegende Operationen möglich, die im Folgenden aufgeführt werden:
Lesen. Daten können aus einem Stream gelesen werden. Dabei werden die Daten aus dem Stream in eine Datenstruktur übertragen, beispielsweise eine Zeichenfolge oder ein Bytearray.
Schreiben. Sie können in einen Stream schreiben. Dabei werden Daten aus einer Datenquelle in den Stream übertragen.
Suchen. Sie können die aktuelle Position im Stream abfragen und ändern.
Weitere Informationen finden Sie unter Erstellen von Streams.
Streamtypen
In .NET Framework wird ein Stream durch die Stream-Klasse dargestellt, die die abstrakte Klasse für alle anderen Streams bildet. Sie können nicht direkt eine Instanz der Stream-Klasse erstellen. Verwenden Sie stattdessen eine der Klassen, die von dieser Klasse implementiert werden.
Aus der Vielzahl von Streamtypen sind bei Datei-E-/A-Operationen vor allem zwei Klassen relevant: die FileStream-Klasse, die eine Möglichkeit zum Lesen und Schreiben von Dateien bietet, und die IsolatedStorageFileStream-Klasse, die eine Möglichkeit zum Erstellen von Dateien und Verzeichnissen in isolierten Speichern bietet. Darüber hinaus können auch die folgenden Streams bei Datei-E/A-Vorgängen verwendet werden:
In der folgenden Tabelle werden häufige Aufgaben im Zusammenhang mit Streams aufgelistet:
Zweck |
Siehe |
Lesen und Schreiben von Datendateien |
Gewusst wie: Lesen und Schreiben einer neu erstellten Datendatei |
Lesen aus einer XML-Datei |
|
Erstellen eines Streamwriters zum Schreiben von Text in eine Datei |
|
Lesen von Text aus einer Datei |
|
Schreiben von Text in eine Datei |
|
Lesen von Zeichen aus einer Zeichenfolge |
|
Schreiben von Zeichen in eine Zeichenfolge |
|
Verschlüsseln von Daten |
|
Entschlüsseln von Daten |
Dateizugriff und Dateiattribute
Mit den Enumerationen FileAccess, FileMode und FileShare, die die von den Konstruktoren der FileStream-Klasse verwendeten Flags enthalten, können Sie festlegen, wie Dateien erstellt, geöffnet und freigegeben werden. Wenn Sie z. B. einen FileStream öffnen oder neu erstellen, können Sie mit der FileMode-Enumeration angeben, ob Daten an die geöffnete Datei angehängt werden sollen, ob eine neue Datei angelegt wird, wenn die angegebene Datei nicht vorhanden ist, ob die Datei überschrieben werden soll usw.
Mithilfe der FileAttributes-Enumeration können Sie Informationen zu einer Datei ermitteln. Die FileAttributes-Enumeration gibt die für die Datei gespeicherten Attribute zurück, z. B. ob es sich um eine komprimierte, verschlüsselte, ausgeblendete oder schreibgeschützte Datei, eine Archivdatei, ein Verzeichnis, eine Systemdatei oder eine temporäre Datei handelt.
In der folgenden Tabelle werden Aufgaben im Zusammenhang mit Dateizugriffen und Dateiattributen aufgeführt:
Zweck |
Siehe |
Öffnen einer Protokolldatei und Anfügen von Text |
|
Bestimmen der Attribute einer Datei |
Dateiberechtigungen
Mithilfe der FileIOPermission-Klasse kann der Zugriff auf Dateien und Verzeichnisse festgelegt werden. Dies kann besonders für Entwickler wichtig sein, die mit Web Forms arbeiten, da Web Forms standardmäßig innerhalb des Kontextes des lokalen Benutzers ASPNET ausgeführt werden. Dieser Benutzer wird als Teil der ASP.NET- und .NET Framework-Installation erstellt. Beim Zugriff auf Ressourcen durch eine solche Anwendung verfügt das Benutzerkonto ASPNET über eingeschränkte Berechtigungen, sodass Aktionen wie das Schreiben in eine Datei aus einer Webanwendung u. U. nicht möglich sind. Weitere Informationen finden Sie unter Sicherheitsberechtigungen, Anfordern von Berechtigungen und FileIOPermission.
In der folgenden Tabelle werden Aufgaben im Zusammenhang mit Dateiberechtigungen aufgelistet.
Zweck |
Siehe |
Anfordern von integrierten Berechtigungen |
Gewusst wie: Anfordern von Berechtigungen für einen benannten Berechtigungssatz |
Anfordern von mit XML codierten Berechtigungen |
Isolierter Speicher
Das Konzept des isolierten Speichers stellt einen Versuch zur Lösung von Problemen dar, die beim Arbeiten mit Dateien auftreten, für die keine ausreichenden Berechtigungen vorhanden sind. Bei der isolierten Speicherung wird jedem Benutzer ein Datendepot zugewiesen, das einen oder mehrere Speicher enthalten kann. Speicher können pro Benutzer und Assembly voneinander isoliert werden. Nur der jeweilige Benutzer und die Assembly, die einen Speicher erstellt haben, verfügen über Zugriff auf diesen Speicher. Ein isolierter Speicher dient als vollständiges virtuelles Dateisystem – innerhalb eines Speichers können Sie Verzeichnisse und Dateien erstellen und bearbeiten.
In der folgenden Tabelle werden Aufgaben im Zusammenhang mit isolierten Dateispeichern aufgelistet.
Zweck |
Siehe |
Erstellen eines isolierten Speichers |
|
Auflisten von isolierten Speichern |
Gewusst wie: Auflisten von Speichern für isolierten Speicherung |
Löschen eines isolierten Speichers |
|
Erstellen einer Datei oder eines Verzeichnisses in einem isolierten Speicher |
Gewusst wie: Erstellen von Dateien und Verzeichnissen in isoliertem Speicher |
Suchen einer Datei in einem isolierten Speicher |
Gewusst wie: Suchen von vorhandenen Dateien und Verzeichnissen im isolierten Speicher |
Lesen oder Schreiben einer Datei in einem isolierten Speicher |
Gewusst wie: Lesen bzw. Schreiben von Dateien im isolierten Speicher |
Erstellen einer Datei oder eines Verzeichnisses in einem isolierten Speicher |
Gewusst wie: Löschen von Dateien und Verzeichnissen in isoliertem Speicher |
Dateiereignisse
Mit der FileSystemWatcher-Komponente können Sie Änderungen an Dateien und Verzeichnissen auf Ihrem System oder beliebigen Computern ermitteln, auf die Sie über das Netzwerk zugreifen können. So können Sie beispielsweise einen Warnhinweis an einen bestimmten Benutzer senden, wenn eine Datei geändert wurde. Beim Auftreten von Änderungen werden ein oder mehrere Ereignisse ausgelöst, in einem Puffer gespeichert und zur Verarbeitung an die FileSystemWatcher-Komponente weitergeleitet.