In diesem Workshop erfahren Sie, wie Sie mit Hilfe des FileSystemObjects (kurz FSO) Dateioperationen auf Ordner und Dateien ausführen. Hierzu zählen das Erstellen von Dateien und Ordner, das Umbenennen, Kopieren, Löschen und Verschieben. Einführung Bei den FileSystemObjects (kurz FSO) handelt es sich um Objektklassen zur Analysierung des Dateisystems. Zudem werden noch Funktionen zum Lesen und Schreiben von Textdateien bereitgestellt. Im Gegensatz zu den normalen VB-Kommandos können auch Unicode-Formate gelesen und geschrieben werden. Da die FileSystemObjects nicht integraler Bestandteil von Visual Basic sind, müssen Sie diese erst aktivieren. Hierzu öffnen Sie den Dialog Projekt - Verweise und aktivieren dort den Eintrag Microsoft Scripting Runtime. Das bedeutet wiederum, dass Sie, wenn Sie Ihre Anwendung auf einem Fremdrechner installieren, dafür sorgen müssen, dass auch dort die FSO-Bibliothek vorhanden ist. Auf deutsch: Sie müssen die Datei scrrun.dll (ca. 400 KB) mitliefern. Die FSO-Objektbibliothek besteht aus mehreren Objekten. Das oberste Glied ist das FileSystemObjekt, das Ausgangspunkt für verschiedene Methoden ist, um Drive-, File-, Folder- und TextStream-Objekte zu erzeugen. Genau aus diesem Grund scheint es sinnvoll, eine Variable mit Verweis auf dieses oberste Glied global in seinem Projekt zu deklarieren. Dies sollte in einem Modul erfolgen: ' In Modul ' Verweis auf das FileSystemObject Public oFSO As New FileSystemObject Existenz von Laufwerk, Ordner oder Datei prüfen ' Existenz eines Laufwerks prüfen Dim bDriveExists As Boolean bDriveExists = oFSO.DriveExists("F:") ' Existenz eines Ordners prüfen Dim bFolderExists As Boolean bFolderExists = oFSO.FolderExists("F:\temp") ' Existenz einer Datei prüfen Dim bFileExists As Boolean bFileExists = oFSO.FileExists("F:\temp\myFile.exe") Alle diese ...Exists-Methoden geben als Rückgabewert entweder True oder False zurück. Neuen Ordner erstellen ' Existiert der Ordner? If Not oFSO.FolderExists("F:\temp") Then ' Nein! Jetzt erstellen... If oFSO.CreateFolder("F:\temp") Then ' Ordner wurde korrekt erstellt! End If End If Hinweis: Die CreateFolder-Methode kann keine mehrstufigen Verzeichnisse erstellen! Um verschachtelte Verzeichnisse zu erstellen, müssen diese von oberster Ebene aus einzeln erstellt werden. Textdatei erstellen ' TextStream-Objekt erstellen Dim oStream As TextStream ' Neue Textdatei erstellen. Falls vorhanden überschreiben! Set oStream = oFSO.CreateTextFile(Filename, True) Der zweite Parameter (im Beispiel TRUE) gibt an, ob die Datei überschrieben werden soll, falls bereits vorhanden. ' Text an bestehende Datei anhängen Set oStream = oFSO.OpenTextFile(Filename, ForAppending) Achtung! Es wird ein Laufzeitfehler ausgelöst, wenn Sie versuchen eine Datei mit ForAppending zu öffnen, die noch gar nicht existiert! ' Textzeile schreiben (mit autom. Zeilenumbruch!) oStream.WriteLine "IrgendEinText" ' Text ohne autom. Zeilenumbruch schreiben oStream.Write "IrgendEinText" ' 2 Leerzeichen schreiben oStream.WriteBlankLines 2 Nach getaner Arbeit muss das Textfile natürlich wieder geschlossen werden. Hierzu rufen Sie die Close-Methode des TextStream-Objekts auf: ' Textfile schließen oStream.Close Textdatei auslesen ' TextStream-Objekt erstellen Dim oStream As TextStream ' Textdatei zum Lesen öffnen Set oStream = oFSO.OpenTextFile(Filename, ForReading) ' Gesamten Inhalt in eine String-Variable einlesen Dim sText As String sText = oStream.ReadAll ' Eine einzelne Zeile auslesen Dim sLine As String sLine = oStream.ReadLine ' Eine bestimmte Anzahl Bytes auslesen Dim sBuffer As String Dim nBytes As Long nBytes = 100 sBuffer = oStream.Read(nBytes) Beispiel: ' Text zeilenweise auslesen - bis Dateiende Dim sLine As String Do Until oStream.AtEndOfStream sLine = oStream.ReadLine Loop Einzelne Zeilen / Zeichen überspringen ' nächste Zeile überspringen oStream.SkipLine ' 10 Zeichen überspringen oStream.Skip 10 Ermitteln der aktuellen Dateiposition (Zeile / Spalte) ' aktuelle Zeile und Spalte Dim nLine As Long Dim nCol As Long nLine = oStream.Line nCol = oStream.Column Und natürlich gilt auch beim Auslesen einer Textdatei: Nach Beendigung - Textfile schließen: ' Textfile schließen oStream.Close Ordner verschieben, umbenennen, kopieren und löschen Ordner umbenennen ' Ordner umbenennen oFSO.MoveFolder "f:\temp", "f:\temp_1" Ordner verschieben ' Ordner verschieben oFSO.MoveFolder "f:\temp", "f:\ordner\temp" Hinweis: Das Verschieben eines Ordners kann immer nur innerhalb eines Laufwerks erfolgen. Es ist nicht möglich einen Ordner mittels MoveFolder auf ein anderes Laufwerk zu verschieben! Weiter ist zu beachten, dass der Zielordner bereits existieren muss und Sie den (neuen) Namen des Ausgangs-Ordners mit angeben. D.h.: MoveFolder kann einen Ordner verschieben und gleichzeitig umbenennen! Ordner kopieren ' Ordner kopieren Dim sFolder As String Dim sCopyTo As String ' Ausgangsordner sFolder = "f:\temp" ' Neues Ziel sCopyTo = "e:\" ' Ordner samt Inhalt kopieren oFSO.CopyFolder sFolder, sCopyTo Hinweis: Evtl. vorhandene existierende Ordner/Dateien werden hierbei überschrieben. Ist dies nicht gewünscht, geben Sie False als zusätzlichen dritten Parameter an: ' Ordner kopieren: Vorhandene Dateien nicht überschreiben! oFSO.CopyFolder sFolder, sCopyTo, False Ordner löschen ' Ordner löschen oFSO.DeleteFolder "e:\temp", True Der zweite Parameter (force) gibt hierbei an, ob immer alles gelöscht werden soll (True) oder nur Dateien/Ordner, die nicht schreibgeschützt sind (False). Kurze Zusammenfassung ' Ordner auf ein anderes Laufwerk verschieben Dim sFolder As String Dim sMoveTo As String ' Ausgangsordner sFolder = "f:\temp" ' nach Laufwerk E: verschieben sMoveTo = "e:\" ' zunächst Ordner kopieren... oFSO.CopyFolder sFolder, sMoveTo, True ' ...und anschließend Ausgangsordner löschen oFSO.DeleteFolder sFolder, True Dateien verschieben, umbenennen, kopieren und löschen Datei umbenennen ' Datei umbenennen oFSO.MoveFile "f:\temp\test.txt", "f:\temp\test1.txt" Datei verschieben ' Datei verschieben oFSO.MoveFile "f:\temp\test.txt", "f:\ordner\temp\test.txt" Hinweis: Das Verschieben einer Datei kann immer nur innerhalb eines Laufwerks erfolgen. Es ist nicht möglich eine Datei mittels MoveFile auf ein anderes Laufwerk zu verschieben! Weiter ist zu beachten, dass der Zielordner bereits existieren muss und Sie den (neuen) Namen der Ausgangs-Datei mit angeben. D.h.: MoveFile kann eine Datei verschieben und gleichzeitig umbenennen! Datei kopieren ' Datei kopieren Dim sFile As String Dim sCopyTo As String ' Ausgangsdatei sFile = "f:\temp\test.txt" ' Neues Ziel sCopyTo = "e:\" ' Datei kopieren oFSO.CopyFile sFile, sCopyTo Hinweis: Ist die Datei im Zielordner bereits vorhanden, wird dieseautomatisch überschrieben. Ist dies nicht gewünscht, geben Sie False als zusätzlichen dritten Parameter an: ' Datei kopieren: Vorhandene Datei nicht überschreiben! oFSO.CopyFile sFile, sCopyTo, False Achtung! Geben Sie den Zielordner immer mit abschließendem Backslash an, da die CopyFile-Methode sonst versucht, die Datei in den angegebenen (Ordner)namen umzubenennen, was wiederum zu einem Laufzeitfehler führen würde. ' Datei nach e:\temp kopieren ' Ordner "e:\temp" existiert bereits! oFSO.CopyFile sFile, "e:\temp" ' FALSCH! Es kommt zu einem Laufzeitfehler! oFSO.CopyFile sFile, "e:\temp\" ' Korrekt! Datei löschen ' Datei löschen oFSO.DeleteFile "e:\temp\test.txt", True Über den zweiten Parameter (force) können Sie bestimmen, ob die Datei nur gelöscht werden soll, falls diese nicht schreibgeschützt ist (False) oder ob versucht werden soll, die Datei immer zu löschen (True). Kurze Zusammenfassung ' Datei auf ein anderes Laufwerk verschieben Dim sFile As String Dim sMoveTo As String ' Ausgangsdatei sFile = "f:\temp\test.txt" ' nach e:\temp: verschieben sMoveTo = "e:\temp\" ' zunächst Datei kopieren... oFSO.CopyFolder sFile, sMoveTo, True ' ...und anschließend Ausgangsdatei löschen oFSO.DeleteFile sFile, True Ausblick auf Teil 2 Das FileSystemObject bietet natürlich noch viel mehr, als einfach nur Ordner/Dateien zu kopieren, löschen etc. Nachfolgend eine kurze Zusammenfassung was Sie in Teil 2 erwartet:
Das alles erfahren Sie dann in unsrem zweiten Teil zum Workshop "FSO - FileSystemObjects". Dieser Workshop wurde bereits 124.796 mal aufgerufen.
Anzeige
![]() ![]() ![]() Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevWizard für VB5/6 ![]() Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Tipp des Monats ![]() Dieter Otter PopUp-Menü wird nicht angezeigt :-( In diesem Tipp verraten wir Ihnen, wie Sie Probleme mit PopUp-Menüs umgehen können, wenn diese unter bestimmten Umständen einfach nicht angezeigt werden. vb@rchiv CD Vol.6 ![]() ![]() Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. |
|||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |