Zugreifen auf Dateien mit FileSystemObject

Visual Studio .NET 2003

Das File System Object-Modell (FSO-Modell) bietet ein objektbasiertes Tool für die Arbeit mit Ordnern und Dateien. Es ermöglicht Ihnen die Verwendung der vertrauten Syntax Objekt.Methode mit einer Vielzahl von Eigenschaften, Methoden und Ereignissen, um Ordner sowie Dateien zu verarbeiten. Darüber hinaus können Sie auch die herkömmlichen Visual Basic-Anweisungen und -Befehle verwenden.

Mit dem FSO-Modell können Ordner in der Anwendung erstellt, bearbeitet, verschoben und gelöscht werden. Darüber hinaus kann auch ermittelt werden, ob und wo ein bestimmter Ordner vorhanden ist. Weiterhin können Informationen zu Ordnern abgerufen werden, z. B. der Name oder das Erstellungs- bzw. Änderungsdatum.

Das FSO-Modell erleichtert zudem das Verarbeiten von Dateien. Bei der Verarbeitung von Dateien ist das oberste Ziel, Daten in einem effizienten Format zu speichern, auf das problemlos zugegriffen werden kann. Sie müssen in der Lage sein, Dateien zu erstellen, Daten einzufügen und zu ändern und die Daten auszugeben (zu lesen). Die Daten können zwar auch in einer Datenbank gespeichert werden, dabei wird die Anwendung allerdings beträchtlich belastet. Dies kann dazu führen, dass beim Datenzugriff zusätzliche Funktionen, die Bestandteil einer vollständig funktionstüchtigen Datenbank sind, nicht aufgerufen werden können. In diesem Fall ist das Speichern der Daten in einer Text- oder Binärdatei die effizienteste Lösung.

Das in der Typbibliothek Scripting (Scrrun.dll) enthaltene FSO-Modell unterstützt die Erstellung und Bearbeitung von Textdateien mit dem TextStream-Objekt. Binärdateien werden durch das FSO-Modell jedoch nicht unterstützt. Bearbeiten Sie Binärdateien unter Verwendung der FileOpen-Funktion mit dem Binary-Schlüsselwort.

Das FSO-Modell setzt sich aus den folgenden Objekten zusammen:

Objekt Beschreibung
FileSystemObject Ermöglicht das Erstellen, Löschen und Abrufen von Informationen zu Laufwerken, Ordnern und Dateien sowie die Durchführung allgemeiner Änderungen bezüglich von Laufwerken, Ordnern und Dateien. Viele der mit diesem Objekt verknüpften Methoden entsprechen den Methoden der anderen Objekte.
Drive Ermöglicht die Informationsabfrage zu einem mit dem System verbundenen Laufwerk, z. B. verfügbarer Speicherplatz und Freigabename. Ein Laufwerk muss im FSO-Modell jedoch nicht unbedingt eine Festplatte sein, möglich sind auch CD-ROM-Laufwerke, RAM-Datenträger usw. Ein Laufwerk muss auch nicht physisch mit dem System verbunden sein, sondern kann auch über ein lokales Netzwerk (LAN) logisch verknüpft sein.
Folder Ermöglicht das Erstellen, Löschen oder Verschieben von Ordnern sowie die Abfrage ihrer Namen, Pfade und anderer Informationen.
File Ermöglicht das Erstellen, Löschen oder Verschieben von Dateien sowie das Abfragen ihrer Namen, Pfade und anderer Informationen.
TextStream Ermöglicht das Lesen und Schreiben von Textdateien.

Weitere Informationen über die verschiedenen Eigenschaften, Methoden und Ereignisse im FSO-Modell finden Sie im Objektbrowser in Visual Basic, indem Sie die Tasten STRG+ALT+J drücken und die Typbibliothek Scripting anzeigen. Wenn die Typbibliothek Scripting in der Liste nicht angezeigt wird, müssen Sie einen Verweis darauf erstellen (siehe nächsten Abschnitt).

Programmieren im FSO-Modell

Das Programmieren im FSO-Modell umfasst drei Hauptaufgaben:

  • Das Erstellen eines FileSystemObject-Objekts, indem Sie die CreateObject-Methode verwenden oder eine Variable als FileSystemObject-Objekt dimensionieren.
  • Das Verwenden der entsprechenden Methoden für das erstellte Objekt.
  • Den Zugriff auf die Objekteigenschaften.

Das FSO-Modell befindet sich in der Typbibliothek Scripting in der Datei Scrrun.dll. Wenn noch kein Verweis auf diese Datei vorhanden ist, können Sie einen erstellen.

So erstellen Sie einen Verweis auf die Typbibliothek "Scripting" ("Scrrun.dll")

  1. Klicken Sie im Menü Projekt auf Verweis hinzufügen und dann auf die Registerkarte COM.
  2. Wählen Sie aus der Liste Komponentenname den Eintrag Microsoft Scripting Runtime und dann die Option Auswählen.

    Jetzt können Sie die Objekte, Auflistungen, Eigenschaften, Methoden, Ereignisse und Konstanten des FSO-Modells im Objektbrowser anzeigen.

So erstellen Sie ein "FileSystemObject"-Objekt

  • Dimensionieren Sie eine Variable als Typ FileSystemObject (siehe folgendes Codebeispiel):

    Dim fso As New FileSystemObject

    - oder -

  • Erstellen Sie ein FileSystemObject-Objekt mit der CreateObject-Methode (siehe folgendes Codebeispiel):
    fso = CreateObject("Scripting.FileSystemObject")
    

Im zweiten Beispiel ist Scripting der Name der Typbibliothek und FileSystemObject der Name des Objekts, von dem Sie eine Instanz erstellen möchten.

Hinweis   Die erste Methode funktioniert nur in Visual Basic, die zweite Methode funktioniert sowohl in Visual Basic als auch in VBScript.
Sicherheitshinweis   Treffen Sie Entscheidungen über den Inhalt einer Datei nicht auf der Grundlage der Dateierweiterung. Es kann z. B. sein, dass eine Datei mit dem Namen Form1.vb keine Visual Basic .NET-Quelldatei ist.

FSO-Methoden

In der folgenden Tabelle sind die FSO-Methoden und die von ihnen ausgeführten Aufgaben aufgelistet:

Aufgabe Befehl
Erstellen eines neuen Objekts CreateFolder oder CreateTextFile
Löschen einer Datei bzw. eines Ordners DeleteFile oder File.Delete; DeleteFolder oder Folder.Delete
Kopieren eines Objekts CopyFile oder File.Copy; CopyFolder oder Folder.Copy
Verschieben eines Objekts MoveFile oder File.Move; MoveFolder oder Folder.Move
Aufrufen eines vorhandenen Laufwerks, Ordners oder einer vorhandenen Datei GetDrive, GetFolder oder GetFile
Hinweis   Das Erstellen bzw. Löschen von Laufwerken wird durch das FSO-Modell nicht unterstützt.

Wie Sie sehen, sind einige Funktionen im FileSystemObject-Objektmodell redundant. So können Sie beispielsweise eine Datei entweder mit der CopyFile-Methode des FileSystemObject-Objekts oder mit der Copy-Methode des File-Objekts kopieren. Die Methoden funktionieren auf dieselbe Art und Weise. Es sind beide Versionen enthalten, damit Sie beim Programmieren möglichst flexibel sind.

Beachten Sie jedoch, dass Sie für ein neu erstelltes Objekt keine Get-Methoden benötigen, da die Create-Funktionen bereits einen Handle auf das Objekt zurückgeben. Wenn Sie z. B. einen neuen Ordner mit der CreateFolder-Methode erstellen, müssen Sie zum Aufrufen der Eigenschaften (wie Name, Path oder Size) die GetFolder-Methode nicht verwenden. Legen Sie zu diesem Zweck eine Variable für die CreateFolder-Funktion fest, um einen Handle auf den neu erstellten Ordner zu erhalten und die Eigenschaften, Methoden und Ereignisse abzufragen.

Laufwerksdaten

Das Drive-Objekt ermöglicht das Abrufen von Informationen zu verschiedenen mit einem System physisch oder über ein Netzwerk verbundenen Laufwerken. Die Eigenschaften enthalten folgende Informationen:

Eigenschaft Beschreibung
TotalSize Gesamtgröße des Laufwerks in Bytes
AvailableSpace, FreeSpace Verfügbarer Speicherplatz auf dem Laufwerk in Bytes
DriveLetter Dem Laufwerk zugeordneter Buchstabe
DriveType Laufwerkstyp (Wechseldatenträger, Festplatte, Netzwerk, CD-ROM oder RAM-Datenträger)
SerialNumber Seriennummer des Laufwerks
FileSystem Typ des durch das Laufwerk verwendeten Dateisystems (FAT, FAT32 oder NTFS)
IsReady Verfügbarkeitsstatus des Laufwerks
ShareName, VolumeName Name der Freigabe und/oder des Datenträgers
Path, RootFolder Pfad oder Stammordner des Laufwerks

App.Path, ChDir, ChDrive und CurDir

Beim Verwenden der Path-Eigenschaft (App.Path), der ChDrive-Anweisung und der ChDir-Anweisung bzw. der CurDir-Funktion kann je nach Ausführungsart des Programms oder Projekts anstelle des Laufwerkspfades (z. B. E:\Ordner) auch ein Universal Naming Convention-Pfad (UNC-Pfad) zurückgegeben werden, der mit der Zeichenfolge \\Server\Partition beginnt.

App.Path gibt unter folgenden Bedingungen einen UNC-Pfad zurück:

  • Sie führen ein Projekt aus, nachdem Sie es von einer Netzwerkfreigabe geladen haben, auch wenn die Netzwerkfreigabe mit einem Laufwerkbuchstaben verknüpft ist.
  • Sie führen eine kompilierte ausführbare Datei von einer Netzwerkfreigabe aus (aber nur, wenn sie mit einem UNC-Pfad ausgeführt wird).

ChDrive kann UNC-Pfade nicht verarbeiten. Wenn App.Path einen UNC-Pfad zurückgibt, wird ein Fehler erzeugt. Dieser Fehler kann durch Einfügen von On Error Resume Next vor der ChDrive-Anweisung oder dadurch beseitigt werden, dass überprüft wird, ob es sich bei den ersten beiden Zeichen von App.Path um umgekehrte Schrägstriche handelt.

An der Befehlseingabeaufforderung wird jeweils der Laufwerkspfad für das aktuelle Verzeichnis angezeigt. CurDir ist somit auf einen Laufwerkspfad festgelegt. ChDir generiert keinen Fehler, kann jedoch das Verzeichnis nicht von einem Laufwerkspfad in einen UNC-Pfad ändern. Die einzige Lösung für dieses Problem besteht darin, ein lokales Laufwerk zu suchen, das mit der Freigabe verknüpft ist, die im UNC-Pfad angegeben wurde, oder in der Verwendung von Netzwerkbefehlen, um eine solche Verknüpfung zu erstellen.

Wenn das Projekt von einer Netzwerkfreigabe (einem UNC-Pfad oder einem verknüpften Laufwerkspfad) in die Visual Basic-Entwickungsumgebung geladen wurde, gibt App.Path einen UNC-Pfad zurück, wenn das Projekt ausgeführt wird und ChDrive fehlschlägt oder einen Fehler erzeugt. ChDir erzeugt keinen Fehler, kann jedoch das Verzeichnis nicht ändern. Die einzige Lösung besteht darin, das Laufwerk und Verzeichnis manuell festzulegen.

Wenn mehrere Benutzer auf das Projekt auf der Netzwerkfreigabe Zugriff haben, können Sie eine MS-DOS-Umgebungsvariable verwenden, um jedem Benutzer eine angepasste Verknüpfung für die Freigabe zur Verfügung zu stellen.

Ordnerinformationen

In der folgenden Tabelle sind die Methoden zum Ausführen allgemeiner Ordneraufgaben aufgelistet:

Methode Aufgabe
FileSystemObject.CreateFolder Erstellt einen Ordner.
Folder.Delete oder
FileSystemObject.DeleteFolder
Löscht einen Ordner.
Folder.Move oder
FileSystemObject.MoveFolder
Verschiebt einen Ordner.
Folder.Copy oder
FileSystemObject.CopyFolder
Kopiert einen Ordner.
Folder.Name Ruft den Namen des Ordners ab.
FileSystemObject.FolderExists Ermittelt, ob ein Ordner auf einem Laufwerk vorhanden ist.
FileSystemObject.GetFolder Lädt eine Instanz eines vorhandenen Folder-Objekts.
FileSystemObject.GetParentFolderName Ermittelt den Namen des übergeordneten Ordners.
FileSystemObject.GetSpecialFolder Ermittelt den Pfad eines Systemordners.

Sequenzielle Textdateien und FSO

Sequenzielle Textdateien (gelegentlich auch als Textstrom bezeichnet) sind hilfreich, wenn Sie den Inhalt einer Datei innerhalb eines FileSystemObject-Objekts lesen möchten. Mit folgenden Methoden können Sie auf sequenzielle Textdateien zugreifen:

Methode Aufgabe
CreateTextFile, OpenTextFile oder OpenAsTextStream Erstellt eine sequenzielle Textdatei.
Write oder WriteLine Fügt Daten in eine Textdatei ein.
Read, ReadLine oder ReadAll Liest Daten aus einer Textdatei.
File.Move oder MoveFile Verschiebt eine Datei.
File.Copy oder CopyFile Kopiert eine Datei.
File.Delete oder DeleteFile Löscht eine Datei.

Siehe auch

Dateizugriff mit Visual Basic-Laufzeitfunktionen | Dateizugriff mit Visual Basic .NET

Anzeigen: