Objekt FileSystemObject zprostředkovává přístup k souborovému systému serveru.
Objekt FileSystemObject obsahuje kolekci Drives, všech disků na serveru. Přes tuto kolekci získáme přístup ke všem složkám a souborům na serveru.
Protože objekt FileSystemObject není vnitřním objektem ASP, musíme nejdříve získat jeho instanci. Instanci získáme voláním metody Server.CreateObject:
objFSO = Server.CreateObject("Scripting.FileSystemObject")
V dalším textu budeme předpokládat, že máme vytvořenu instanci objektu FileSystemObject nazvanou objFSO.
Metoda BuildPath přidá zadaný soubor nebo složku do existujícího řetězce s cestou. V případě potřeby vloží oddělovač '\'.
Příklad:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
strCesta = objFSO.BuildPath("C:\Dokumenty", "dokument.txt")
Response.Write "Cesta k souboru dokument.txt je " & strCesta
Metoda BuildPath v tomto příkladu vrátí řetězec "C:\Dokumenty\dokument.txt".
Metoda CopyFile zkopíruje soubor do zadané složky. Syntaxe je:
objFile.CopyFile(zdroj, cíl[, přepsat])
Parametr zdroj obsahuje cestu k souboru, který má být zkopírován. Název souboru může obsahovat zástupné znaky * a ?.
Parametr cíl určuje umístění, kam se má soubor zkopírovat.
Pokud cílová cesta končí zpětným lomítkem "\" nebo pokud zdrojová cesta obsahuje zástupné znaky, znamená cílová cesta složku, v níž se vytvoří kopie souboru s původním jménem. V opačném případě je parametr považován za úplnou cestu obsahující i nové jméno souboru a vytvoří se kopie souboru s tímto novým jménem.
Parametr přepsat určuje, zda má být cílový soubor přepsán, pokud již existuje.
Při vynechání parametru se použije implicitní hodnota true. Pokud má parametr hodnotu false a cílový soubor již existuje, dojde k chybě.
Příklad zkopírování souboru soubor.txt v kořenové složce disku C pod nový názvem soubor2.txt:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
'Objekt souborového systému
objFSO.CopyFile("C:\soubor1.txt", "C:\soubor2.txt")
'Zkopírování souboru
Metoda CopyFolder zkopíruje soubor do zadané složky. Syntaxe je:
objFile.CopyFolder(zdroj, cíl[, přepsat])
Parametr zdroj obsahuje cestu ke složce, která má být zkopírována. Název složky může obsahovat zástupné znaky * a ?.
Parametr cíl určuje umístění, kam se má složka zkopírovat.
Pokud cílová cesta končí zpětným lomítkem "\" nebo pokud zdrojová cesta obsahuje zástupné znaky, znamená cílová cesta složku, v níž se vytvoří kopie souboru s původním jménem. V opačném případě je parametr považován za úplnou cestu obsahující i nové jméno složky a vytvoří se kopie složky s tímto novým jménem.
Parametr přepsat určuje, zda má být existující cílová složka přepsána.
Při vynechání parametru se použije implicitní hodnota true. Pokud má parametr hodnotu false a cílová složka již existuje, dojde k chybě.
Příklad zkopírování složky slozka v kořenové složce disku C pod nový názvem slozka2:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
'Objekt souborového systému
objFSO.CopyFolder("C:\slozka", "C:\slozka2")
'Zkopírování složky
Vytvoří novou složku se zadaným názvem. Při pokusu o vytvoření již existující složky, dojde k chybě. Při vytváření složky se proto obvykle nejdříve použije metoda FolderExists.
Tato metoda vytvoří a otevře soubor a vrátí objekt TextStream, odkazující na vytvořený.
Metoda má syntaxi:
objTextStream = objFSO.CreateTextFile(jméno, [přepsat], [unicode])
Parametr jméno určuje, jak se má pojmenovat nově vytvářený soubor. Tento parametr zároveň obsahuje cestu, kde se soubor má vytvořit.
Nepovinný parametr přepsat určuje, zda má být soubor (pokud již existuje) přepsán. Implicitní hodnota je false.
Parametr unicode určuje, zda má být soubor uložen jako text v kódování Unicode. Implicitní hodnota je false.
Příklad vytvoření souboru soubor.txt v kořenové složce disku C a zapsání textu do tohoto souboru:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
'Objekt souborového systému
Set objTextStream = objFSO.CreateTextFile("C:\soubor.txt", true, false)
'Vytvoření souboru
objTextStream.Write "Text zapsaný do souboru..."
objTextStream.Close
Metoda DeleteFile umožňuje smazat zadaný soubor. Metoda má syntaxi:
objFSO.DeleteFile(cesta, [násilně])
Nepovinný parametr násilně určuje, zda má být soubor smazán i v případě, že je určen pouze pro čtení. Pokud parametr neuvedeme, použije se implicitní hodnota false, která znemožní smazání souborů určených pouze pro čtení.
Pokud nemá uživatel nastavena práva, umožňující smazání daného soubor, způsobí příkaz objFSO.DeleteFile(cesta, true) chybu.
Metoda DeleteFolder umožňuje smazat zadanou složku. Metoda má syntaxi:
objFSO.DeleteFolder(cesta, [násilně])
Nepovinný parametr násilně určuje, zda má být složka smazána i v případě, že je určena pouze pro čtení. Pokud parametr neuvedeme, použije se implicitní hodnota false, která znemožní smazání složek určených pouze pro čtení.
Pokud nemá uživatel nastavena práva, umožňující smazání dané složky, způsobí příkaz objFSO.DeleteFolder(cesta, true) chybu.
Metoda DriveExists vrací hodnotu true, pokud se zadaný disk vyskytuje v souborovém systému. V opačném případě vrací hodnotu false.
Jako parametr můžeme použít označení disku, složky nebo souboru.
Příklad zjištění všech disků v souborovém systému:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
'Objekt souborového systému
For i = 65 To 90
'ASCII kódy znaků A-Z
pismeno = Chr(i)
'Převod kódu na znak
If objFSO.DriveExists(pismeno) Then
Response.Write "Nalezen disk " & pismeno & ":<BR>"
End If
Next
Metoda FileExists vrací hodnotu true, pokud zadaný soubor existuje. V opačném případě vrací hodnotu false.
Tato metoda se používá, aby se zabránilo chybám způsobeným manipulací s neexistujícím souborem.
Příklad smazání souboru soubor.txt v kořenové složce disku C:
If objFSO.FileExists("C:\soubor.txt") Then
objFSO.DeleteFile("C:\soubor.txt")
Response.Write "Soubor byl smazán."
Else
Response.Write "Soubor neexistuje, nemůže být smazán."
End If
Metoda FolderExists vrací hodnotu true, pokud zadaná složka existuje. V opačném případě vrací hodnotu false.
Tato metoda se používá, aby se zabránilo chybám způsobeným manipulací s neexistující složkou.
Příklad vytvoření složky dokumenty v kořenové složce disku C:
If Not objFSO.FolderExists("C:\dokumenty") Then
objFSO.CreateFolder("C:\dokumenty")
Response.Write "Složka byla vytvořena."
Else
Response.Write "Složka nemůže být vytvořena, protože již existuje."
End If
Tato metoda vrací absolutní cestu odvozenou od aktuální složky a od zadané relativní cesty k souboru nebo složce.
Pokud bude aktuální složka "C:\Dokumenty" vrátí tato metoda pro parametr "Josef\soubor.txt" cestu "C:\Dokumenty\Josef\soubor.txt".
Metoda GetBaseName vrací pro zadanou cestu k souboru jméno souboru bez cesty a bez přípony.
Metoda GetDrive vrací objekt Drive představující zadaný disk. Název disku může obsahovat dvojtečku, zpětné lomítko nebo může představovat síťový název disku, např. "c", "c:", "c:\" nebo "\\pocitac\disk".
Metoda GetDriveName vrací označení disku. Jako hodnota parametr může být použita cesta k souboru či složce nebo jen označení disku jako "c:" nebo "c".
Tato metoda vrací příponu souboru určenou ze zadané cesty.
Metoda GetFile vrací objekt File představující zadaný soubor. Zadává se cesta k souboru a není tedy nutné procházet postupně několik kolekcí Folders.
Metoda GetFileName vrací k zadané cestě jméno souboru nebo jméno poslední složky v cestě. Neprovádí se ověření existence souboru nebo složky.
Tato metoda vrací objekt Folder představující zadanou složku. Může být zadána absolutní nebo relativní cesta ke složce nebo jen název podsložky v aktuální složce.
Tato metoda vrací jméno složky nadřazené zadanému souboru nebo složce.
Metoda GetSpecialFolder vrací objekt Folder představující zadanou speciální složku. Metoda má syntaxi:
Set objFolder = objFSO.GetSpecialFolder(složka)
Parametr složka, může nabývat následujících hodnot:
| Hodnota | Konstanta | Popis |
|---|---|---|
| 0 | WindowsFolder | Složka %Windows%, standardně "WinNT" v případě Windows NT/2000/XP nebo "Windows" v případě Windows 95/98/ME. |
| 1 | SystemFolder | Složka %System%, standardně "WinNT\System32" v případě Windows NT/2000/XP nebo "Windows\System" v případě Windows 95/98/ME. |
| 2 | TemporaryFolder | Složka %Temp%, standardně "WinNT\Temp" v případě Windows NT/2000/XP nebo "Windows\Temp" v případě Windows 95/98/ME. |
Aby bylo možné využít uvedené konstanty, je nutné zavést typovou knihovnu scrrun.dll, to provedeme direktivou:
<!-- METADATA TYPE="TypeLib" FILE="C:\WINNT\system32\scrrun.dll" -->
Cesta v atributu FILE musí odpovídat umístění souboru na konkrétním serveru.
Tato metoda vrací náhodně vygenerované jméno, které může být použito pro vytvoření dočasné složky nebo souboru.
Metoda MoveFile slouží k přesunu nebo přejmenování souboru. Syntaxe je stejná jako u metody CopyFile, tedy:
objFile.MoveFile(zdroj, cíl[, přepsat])
Parametr zdroj obsahuje cestu k souboru, který má být přesunut nebo přejmenován. Název souboru může obsahovat zástupné znaky * a ?.
Parametr cíl určuje umístění, kam se má soubor přesunout.
Pokud cílová cesta končí zpětným lomítkem "\" nebo pokud zdrojová cesta obsahuje zástupné znaky, znamená cílová cesta složku, do níž se přesune soubor s původním jménem. V opačném případě je parametr považován za úplnou cestu obsahující i nové jméno souboru a soubor se při přesunu zároveň i přejmenuje.
Parametr přepsat určuje, zda má být existující cílový soubor přepsán.
Při vynechání parametru se použije implicitní hodnota true. Pokud má parametr hodnotu false a cílový soubor již existuje, dojde k chybě.
Příklad přejmenování souboru soubor.txt v kořenové složce disku C na soubor2.txt:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
'Objekt souborového systému
objFSO.MoveFile("C:\soubor1.txt", "C:\soubor2.txt")
'Přejmenování souboru
Metoda MoveFolder přesune nebo přejmenuje zadanou složku. Syntaxe je:
objFile.MoveFolder(zdroj, cíl[, přepsat])
Parametr zdroj obsahuje cestu ke složce, která má být přesunuta nebo přejmenována. Název složky může obsahovat zástupné znaky * a ?.
Parametr cíl určuje umístění, kam se má složka přesunout.
Pokud cílová cesta končí zpětným lomítkem "\" nebo pokud zdrojová cesta obsahuje zástupné znaky, znamená cílová cesta složku, do níž se přesune složka s původním jménem. V opačném případě je parametr považován za úplnou cestu obsahující i nové jméno složky a složka se při přesunu zároveň přejmenuje.
Parametr přepsat určuje, zda má být existující cílová složka přepsána.
Při vynechání parametru se použije implicitní hodnota true. Pokud má parametr hodnotu false a cílová složka již existuje, dojde k chybě.
Příklad přejmenování složky slozka v kořenové složce disku C na slozka2:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
'Objekt souborového systému
objFSO.MoveFolder("C:\slozka", "C:\slozka2")
'Přejmenování složky
Tato metoda otevře soubor a vrátí objekt TextStream, který slouží pro čtení ze souboru, zápis do souboru nebo přidávání na konec souboru.
Metoda má syntaxi:
objTextStream = objFile.OpenTextFile(jméno, [režim], [vytvořit], [formát])
Parametr režim může nabývat následujících hodnot:
| Hodnota | Konstanta | Popis |
|---|---|---|
| 1 | ForReading | Objekt TextStream bude možné použít pro čtení ze souboru. (Implicitní hodnota) |
| 2 | ForWriting | Objekt TextStream bude možné použít pro zápis do souboru. |
| 8 | ForAppending | Objekt TextStream bude možné použít pro přidávání na konec souboru. |
Parametr vytvořit určuje, zda má být požadovaný soubor, v případě, že neexistuje, vytvořen. Implicitní hodnota je false.
Parametr formát může nabývat následujících hodnot:
| Hodnota | Konstanta | Popis |
|---|---|---|
| 0 | TristateFalse | ASCII. (Implicitní hodnota) |
| -1 | TristateTrue | Unicode. |
| -2 | TristateUseDefault | Standardní formát používaný v operačním systému. |
Aby byly dostupné tyto konstanty, musí být načtena typová knihovna scrrun.dll, což se provede direktivou:
<!-- METADATA TYPE="TypeLib" FILE="C:\WINNT\system32\scrrun.dll" -->
Cesta v atributu FILE musí odpovídat umístění souboru na konkrétním serveru.
Atribut Drives vrací kolekci Drives obsahující objekty Drive představující všechny disky v souborovém systému.