Absolute Pfade sind Pfade im DOS-Format wie sie von der Funktion MapPath zurück gegeben werden:
C:\root\webs
Virtuelle Pfade sind realtive oder absolute Pfade, die sich auf das Basis-Verzeichnis der Web-Anwendung beziehen. Virtuelle Pfade können als Pfad-Separator-Zeichen sowohl \ als auch / enthalten. Virtuelle Pfade enthalten nie einen Laufwerk-Bezeichner (z.B: C:\):
/root/webs webs/stuff
Die Funktion MapPath liefert zu einem virtuellen Pfad den zugehörigen absoluten Pfad. Die Funktionen des FS-Objektes akzeptieren virtuelle und absolute Pfade. Intern werden virtuelle Pfade automatisch in absolute Pfade gewandelt bevor auf das File-System zugegriffen wird.
Das FS-Modul merkt sich den Zustand (Ordner existiert oder nicht) jedes abgefragten Ordners in einem Cache. Bei einer erneuten Abfrage eines bereits abgefragten Ordners wird der im Cache gespeicherte Zustand zurück gegeben, wodurch keine langsame Datei-Operation des Betriebssystem gerufen wird.
Damit der Cache-Mechanismus nicht hintergangen wird, müssen alle Ordner mit Funktionen des FS-Moduls erzeugt und gelöscht werden!
Funktionen die den Cache verwenden:
class CFileSystem FileFormat FSO : end class
Die Klasse CFileSystem kapselt alle File-System Funktionen und Eigenschaften. Beim Includen von fs.inc wird das globale FS-Objekt dieser Klasse angelegt, über welches auf die Funktionen und Properties zugegriffen werden kann. Das FS Objekt verwaltet intern ein Scripting.FileSystemObject über welches man per FSO-Property zugreifen kann.
FS.FunctionOrProperty
Über das globale Objekt FS kann auf das Filessystem zugegriffen werden. Im Gegensatz zum Scripting.FileSystemObject können sowohl virtuelle als auch absolute Pfade verwendet werden und es werden Unix (\) und DOS (/) Pfadbegrenzerzeichen unterstützt. Einige Funktionen des FS-Objektes sind auf Geschwindigkeit optimiert und verwenden einen Cache. Intern verwaltet das FS-Objekt ein Scripting.FileSystemObject für alle FS-Funktionen. Auf dieses interne Objekt kann über das FSO-Property zugegriffen werden.
FS.FileFormat = myFormat myFormat = FS.FileFormat
Steuert das File-Format (ASCII, Unicode) bei den folgenden Funktionen:
set myFSO = FS.FSO
Ermöglicht den Zugriff auf das vom FS-Objekt verwaltete FileSystemObject, einer von VBScript zur Verfügung gestellten System-Klasse.
myAbsPath = FS.MapPath( aPath )
Berechnet den absoluten Pfad zum Ordner aPath. Wenn der absolute Pfad zum aktuellen Verzeichnis abgefragt werden soll, kann aPath = "." oder aPath = "" übergeben werden. Wenn aPath bereits ein absoluter Pfad ist, wird dieser unverändert zurück gegeben.
Implementation: Für das Berechnen des absoluten Pfades wird die Systemfunktion Server.MapPath() gerufen. Wenn der Pfad ungültig ist, wird ein Exception gesetzt.
Optimierung: Diese Funktion merkt sich den letzten Aufruf. Wenn derselbe Pfad mehrmals hintereinander abgefragt wird, wird das letzte Resultat zurückgegeben und der Aufruf von Server.MapPath() gespart.
Wenn aPath ungültige Zeichen enthält wird ein Exception gesetzt.
myPath = FS.AppendSlash( aPath )
Hängt einen Pfadseparator (/) an aPath, wenn noch keiner vorhanden ist.
myPath = FS.AppendName( aPath, aName )
Hängt aName an aPath, getrennt durch einem Pfadseparator (/) und gibt das Resultat zurück.
myPath = FS.AppendNameN( aPath, aName )
Hängt aName an aPath, getrennt durch einem Pfadseparator (/). Der resultierende Pfad wird zusätzlich Normalisiert mit der Funktion NormalizePath.
Siehe auch:
aPath = "C:/root/temp" aName = "../home" myPath = FS.AppendNameN( aPath, aName ) ' myPath -> "C:/root/home"
FS.SplitPath aPath, aPathRet, aFilenameRet
Trennt einen Pfad in Verzeichnis-Pfad und Filenamen auf. Wenn in aPath kein Dateiname vorkommt, wird aPathRet = aPath gesetzt und aFilenameRet = "".
aPath = "C:\root\sub\file.txt" FS.SplitPath aPath, aPathRet, aFilenameRet ' aPathRet -> "C:\root\sub\" ' aFilenameRet -> "file.txt"
filename = FS.GetFileName( aPath )
Extrahiert aus aPath den Filenamen plus Extension. Der Pfad darf als Separator sowohl \ als auch / enthalten.
Wenn in aPath kein Separator-Zeichen enthalten ist, wird aPath zurück gegeben.
aPath = "C:\root\home\bild.jpg" filename = FS.GetFileName( aPath ) ' filename -> "bild.jpg"
filename = FS.GetBaseName( aPath )
Extrahiert aus aPath den Filenamen ohne Extension. Der Pfad darf als Separator sowohl \ als auch / enthalten. Als Extension wird alles nach dem letzten Punkt interpretiert, inklusive Punkt.
aPath = "C:\root\home\bild.jpg" filename = FS.GetBaseName( aPath ) ' filename -> "bild" aPath = "images/bild.v1.5.jpg" filename = FS.GetBaseName( aPath ) ' filename -> "bild.v1.5"
extension = FS.GetExtension( aPath )
Extrahiert aus aPath die Extension inklusive Punkt. Als Extension wird alles nach dem letzten Punkt interpretiert, inklusive Punkt.
aPath = "C:\root\home\bild.jpg" ext = FS.GetExtension( aPath ) ' ext -> ".jpg" aPath = "bild.v1.5.jpg" ext = FS.GetExtension( aPath ) ' ext -> ".jpg"
path = FS.GetPathRelativeToRoot( aAbsPath, aRelRootPath )
Berechnet den relativen Pfad von einem Verzeichnis V (im Beispiel wabis), welches in aAbsPath enthalten ist, zum Verzeichnis aAbsPath (im Beispiel test). Das Verzeichnis V wird als relativer Pfad in aRelRootPath angegeben.
aAbsPath = "C:\usr\wabis\wikis\test" aRelRootPath = "../../" path = FS.GetPathRelativeToRoot( aAbsPath, aRelRootPath ) ' path -> "wikis/test"
path = FS.GetCurrentPathRelativeToRoot( aRelRootPath )
Berechnet den relativen Pfad von einem Verzeichnis V (im Beispiel wabis), welches in aktuellen Verzeichnis der Web-Anwendung enthalten ist, zum aktuellen Verzeichnis (im Beispiel test). Das Verzeichnis V wird als relativer Pfad in aRelRootPath angegeben.
appliPath = FS.MapPath(".") ' appliPath -> "C:\usr\wabis\wikis\test" aRelRootPath = "../../" path = FS.GetCurrentPathRelativeToRoot( aRelRootPath ) ' path -> "wikis/test"
normPath = FS.NormalizePath( aPath )
Entfernt bzw. fasst "../" und "/./" Teile zusammen.
aPath = "test/images/.././css" normPath = FS.NormalizePath( aPath ) ' normPath -> "test/css"
set myFolder = FS.GetFolder( aPath )
if FS.FolderExists( aPath ) then
Test, ob das Verzeichnis aPath existiert.
Optimierung: Das FS-Modul merkt sich den Zustand jedes abgefragten Ordners in einem Cache. Bei einer erneuten Abfrage eines bereits abgefragten Ordners wird der im Cache gespeicherte Zustand zurück gegeben, wodurch keine langsame Datei-Operation des Betriebssystem gerufen wird.
Damit der Cache-Mechanismus nicht hintergangen wird, müssen alle Ordner mit Funktionen des FS-Moduls erzeugt und gelöscht werden!
myPath = "../images" if FS.FolderExists( myPath ) then set myFolder = FS.GetFolder( myPath ) : else : end if
FS.CreateFolder aPath
Erzeugt einen neuen Ordner aPath, sofern er nicht bereits existiert.
Implementation: Zunächst wird für aPath der absolute Pfad A mittels MapPath ermittelt. Dann wird der absolute Pfad zerlegt in den Namen des neuen Ordners N und den Pfad zum Verzeichnis V, in welchem der Ordner N angelegt werden soll. Dann wird im Verzeichnis V der Ordner N erzeugt.
Wenn das Verzeichnis V nicht existiert oder das Erzeugen des neuen Ordners N nicht erfolgreich ist, wird ein Exception gesetzt.
Optimierung: Damit der Cache-Mechanismus nicht hintergangen wird, müssen alle Ordner mit Funktionen des FS-Moduls erzeugt und gelöscht werden!
newFolderName = "temp" myPath = "../images" aPath = FS.AppendName( myPath, newFolderName ) ' aPath -> "../images/temp" FS.CreateFolder aPath
Erzeugt im Ordner images, der sich eine Stufe über dem aktuellen Verzeichnis befindet, einen neuen Ordner mit Name temp.
newFolderName = "temp/thumb" myPath = "../images" aPath = FS.AppendName( myPath, newFolderName ) ' aPath -> "../images/temp/thumb" FS.CreateFolder aPath ' -> Excpetion
Angenommen, das Verzeichnis images existiert, das Verzeichnis temp jedoch noch nicht. Dann wird im obigen Beispiel ein Exception gesetzt, weil zum Erzeugen des Ordners thumb das Verzeichnis temp bereits existieren muss! Man kann also mit CreateFolder nicht eine ganze Hierarchie von Ordnern mit einem Aufruf erzeugen!
FS.DeleteFolder aPath
Löscht den Ordner aPath und alle darin enthaltenen Unter-Ordner und Dateien, sofern der Ordner aPath existiert.
Wenn ein zu löschender Ordner oder eine zu löschende Datei von einem anderen Programm geöffnet ist, wird ein Exception gesetzt. Einige Unter-Ordner oder Dateien können in diesem Fall gelöscht worden sein.
Wenn kein Ordner aPath existiert, macht diese Funktion nichts. Ob ein Ordner existiert oder nicht, kann mit der Funktion FolderExists ermittelt werden.
Optimierung: Damit der Cache-Mechanismus nicht hintergangen wird, müssen alle Ordner mit Funktionen des FS-Moduls erzeugt und gelöscht werden!
myFilesList = FS.ListFiles( aPath )
In die Liste myFilesList werden nur die Namen der Dateien aufgenommen, die sich unmittelbar im Ordner aPath befinden. Es werden keine Dateinamen von Unter-Ordnern aufgenommen. In myFilesList werden auch keine Namen von Unter-Ordnern aufgenommen.
Die Funktion setzt voraus, dass der Ordner aPath existiert.
set myFile = FS.GetFile( aPath )
Gibt ein File System-Objekt für die Datei aPath zurück. Über das File Objekt können Eigenschaften der Datei wie Filename, Erzeugungsdatum, Datum der letzten Änderung usw. abgefragt und geändert werden.
aPath = "../images/logo.png" if FS.FileExists( aPath ) then set myFile = FS.GetFile( aPath ) myFileSize = myFile.Size else myFileSize = 0 end if
if FS.FileExists( aPath ) then
Optimierung: Das FS-Modul merkt sich den Zustand ob die Datei existiert oder nicht in einem Cache. Wird diese Funktion mehrmals hintereinander mit dem selben aPath aufgerufen, so wird der Zustand des Cache zurück gegegeben, wodurch langsame Aufrufe von Betriebssystemfunktionen vermieden werden.
Damit der Cache-Mechanismus nicht hintergangen wird, müssen zum Erzeugen, Löschen, Verschieben und Umbenennen von Dateien die FS-Funktionen verwendet werden!
text = FS.ReadFile( aPath )
Liest den Inhalt der Textdatei aPath ein. Es wird vorausgesetzt, dass die Datei existiert. Wenn die Datei nicht geöffnet werden kann, wird ein Exception gesetzt.
Wenn die Datei leer ist, wird ein Leerstring zurück gegeben.
In welchem Format der Text in der Datei interpretiert wird, kann mit dem FileFormat-Property eingestellt werden.
myPath = "index.html" if FS.FileExists(myPath) then text = FS.ReadFile( myPath ) else text = "" end if
FS.WriteFile aPath, aText
Erzeugt eine Text-Datei aPath und speichert aText darin. Wenn die Datei bereits existiert, wird ihr Inhalt mit aText überschrieben.
In welchem Text-Format der Text gespeichert werden soll kann mit dem FileFormat-Property eingestellt werden.
Wenn ein Verzeichnis in aPath nicht existiert oder die Datei nicht erzeugt oder geöffnet werden kann, wird ein Exception gesetzt.
myText = "..." myFilename = "test.txt" FS.WriteFile myFilename, myText
set myTextStream = FS.OpenFileForWriting( aPath )
Erzeugt oder öffnet eine Datei aPath für das Speicher von Text. Wenn die Datei bereits existiert, wird ihr Inhalt gelöscht. Für das Speichern kann die TextStream-Funktion Write (wiederholt) verwendet werden. Am Ende muss die Datei mit der TextStream-Funktion Close geschlossen werden (siehe Anwedung).
In welchem Text-Format der Text gespeichert werden soll kann mit dem FileFormat-Property eingestellt werden.
Wenn ein Verzeichnis in aPath nicht existiert oder die Datei nicht erzeugt oder geöffnet werden kann, wird ein Exception gesetzt.
aPath = "test.txt" set myTextStream = FS.OpenFileForWriting( aPath ) myTextStream.Write "Zeile 1" & vbCRLF myTextStream.Write "Zeile 2" & vbCRLF : myTextStream.Close
FS.DeleteFile aPath
Wenn die Datei existiert, wird sie gelöscht. Wenn die Datei von einer anderen Anwendung geöffnet ist oder nicht gelöscht werden kann, wird ein Exception gesetzt. Wenn die Datei nicht existiert, wird nichts ausgeführt.
Ob eine Datei existiert oder nicht kann mit der Funktion FileExists ermittelt werden.
FS.CopyFile aSrcPath, aDestPath
Wenn die Datei aSrcPath existiert, wird sie zu aDestPath kopiert. Wenn die Datei aSrcPath nicht existiert, wird nichts ausgeführt. Wenn bereits eine Datei aDestPath existiert, wird sie überschrieben.
In aDestPath muss ein Dateiname für die Ziel-Datei angegeben werden. Es reicht nicht, wenn nur das Ziel-Verzeichnis angegeben wird!
Wenn die Ziel-Datei nicht erzeugt oder überschrieben werden kann, wird ein Exception gesetzt.
mySrcPath = "text.txt" myDestPath = "backup/text.txt" FS.CopyFile mySrcPath, myDestPath
FS.MoveFile aSrcPath, aDestPath
Wenn die Datei aSrcPath existiert, wird sie zu aDestPath verschoben und oder umbenannt. Wenn die Datei aSrcPath nicht existiert, wird nichts ausgeführt. Wenn bereits eine Datei aDestPath existiert, wird diese überschrieben.
In aDestPath muss ein Dateiname für die Ziel-Datei angegeben werden. Es reicht nicht, wenn nur das Ziel-Verzeichnis angegeben wird!
Wenn die Ziel-Datei nicht erzeugt oder überschrieben werden kann, wird ein Exception gesetzt.
mySrcPath = "text.txt" myDestPath = "trash/text.txt" FS.MoveFile mySrcPath, myDestPath
myDate = FS.DateLastModified( aPath )
Gibt das Datum der letzten Änderung der Datei aPath zurück.
Es wird vorausgesetzt, dass die Datei aPath existiert. Ob eine Datei existiert oder nicht kann mit der Funktion FileExists ermittelt werden.