Práce se soubory pomocí ASP – zpracování textů

30. března 2000

V minulém článku jsme se naučili pracovat se soubory na serveru pomocí ASP scriptů. Nyní již umíme soubory mazat, kopírovat a přejmenovávat. Víte již také, jak zjistit, zda-li požadovaný soubor existuje. Dnes se naučíme používat textové soubory a na závěr článku si ukážeme, jak udělat tip dne pomocí ASP.

Možnosti práce s textovými soubory:

  • Vytvořit textový soubor (metoda CreateTextFile)
  • Otevřít textový soubor (metoda OpenTextFile)
  • Načíst celý textový soubor do proměnné (metoda ReadAll)
  • Přečíst řádek textového souboru (metoda ReadLine)
  • Přečíst specifikovaný počet znaků (metoda Read)
  • Zapsat do souboru (metoda Write)
  • Zapsat do souboru řádek (metoda WriteLine)
  • Zapsat do souboru prázdný řádek (metoda WriteBlankLines)
  • Přeskočit specifikovaný počet znaků (metoda Skip)
  • Přeskočit řádek (metoda SkipLine)
  • Zavřít soubor (metoda Close)

    Pro práci s textovými soubory jsou potřeba dva objekty a to sice FileSystemObject, který slouží k vytvoření a otevření souboru a objektu TextStrem, který je určen pro čtení a zápis.

    Chceme-li pracovat s textovými soubory musíme nejprve vytvořit instanci objektu FileSystemObject a poté pomocí metody CreateTextFile vytvořit nový textový soubor nebo pomocí metody OpenTextFile otevřít již existující soubor.

    Dim ObjFS
    ‚ Vytvoření instance objektu FileSystemObject
    Set ObjFS=Server.CreateObject(„Scripting.FileSystemObject“)

    Vytvoříme instanci objektu FileSystemObject, kterou následně použijeme pro vytvoření:

    dim ObjStream
    Set ObjStream=ObjFS.CreateTextFile(„soubor.txt“)

    nebo otevření existujícího souboru:

    dim ObjStream
    Set ObjStream=ObjFS.OpenTextFile(„soubor.txt“)

    Nyní si probereme podrobně metody OpenTextFile a CreateTextFile

    Metoda OpenTextFile

    ObjFS.OpenTextFile (filename[,iomode[,create[,format]]])

    Filename je jméno souboru, který má být otevřen. Iomode určuje režim v jakém bude soubor otevřen. Soubor je možné otevřít pro čtení (ForReading – 1), pro zápis (ForWriting – 2) nebo pro přidání na konec (ForAppend – 8). Create je logická hodnota. Pokud je True, je soubor v případě, že neexistuje, vytvořen. Format – určuje zda soubor bude otevřen jako ASCII (0 či jako UNICODE (1).

    Metoda CreateTextFile

    ObjFS.CreateTextFile filename[,overwrite[, unicode]])

    Filename je jméno souboru, který má být vytvořen. Create je logická hodnota. Pokud je True, je soubor v případě, že existuje, přepsán. Unicode – logická hodnota určující zda vytvořený soubor bude ve formátu UNICODE (True) nebo ASCII (False). Pokud je tento parametr vynechán je soubor vytvořen jako ASCII

    Jakmile máme vytvořenu instanci objektu TextStream (tedy otevřený nebo vytvořený nový soubor) můžeme neomezeně používat metody pro četní či zápis. Musíme ale mít na paměti, že soubor nelze otevřít současně pro zápis a čtení. Pokud potřebujeme ze souboru přečíst hodnotu a následně do stejného souboru zapsat, musíme po přečtení soubor zavřít a pak otevřít pro přidávání na konec. Při této metodě je nutno postupovat obezřetně, neboť tento postup může velmi zpomalit vytváření stránky.

    Metoda ReadAll

    nacteno=ObjStream.ReadAll

    Při použití metody ReadAll máme v proměnné načteno, která je typu string obsah celého souboru.

    Metoda ReadLine

    nacteno=ObjStream.ReadLine

    Při použití metody ReadLine máme v proměnné načteno, která je typu string obsah celého řádku (od aktuální pozice).

    Metoda Read

    nacteno=ObjStream.Read (charakters)

    Charakters určuje počet znaků, které budou ze souboru přečteny. Při použití metody Read máme v proměnné načteno, která je typu string, počet znaků jenž jsme specifikovali v parametru charakters.

    Metoda Write

    nacteno=ObjStream.write (string)

    Pomocí metody Write můžeme do souboru zapsat libovolný řetězec.

    Metoda WriteLine

    ObjStream.WriteLine ([string])

    Metoda WriteLine umožňuje do textového souboru zapsat řetězec, který ukončí znakem CRLF. Pokud vynecháme parametr je do souboru zapsáno CRLF.

    Metoda WriteBlankLines

    ObjStream.WriteBlankLines(lines)

    Do souboru zapíše tolik prázdných řádek, kolik specifikujeme v parametru lines

    Metoda Skip

    ObjStream.Skip (charakters)

    Díky metodě Skip máme možnost při zpracovávání souboru vynechat (ignorovat)počet znaků, jejichž počet specifikujeme v parametru.

    Metoda SkipLine

    ObjStream.SkipLine

    Použitím metody SkipLine ignorujeme v textovém souboru jeden řádek.
    Metoda Close

    ObjStream.Close

    Je třeba mít mysli, že po zavření souboru metodou Close zůstává instance objektu stále v paměti. Pro její odstranění je potřeba provést její nastavení na Nothing

    Set ObjStream=Nothnig
    Set ObjFS=Nothnig

    Praktický příklad:

    Na závěr bych chtěl uvést jeden praktický příklad. Ukážeme si, jak udělat na www stránkách tip dne s použitím textového souboru. Vytvořte textový soubor, kde je na každém řádku jeden tip, který chcete uživateli zobrazit. V příkladu je použita funkce RND, která generuje náhodné číslo v rozsahu 0-1 a pak funkce Int, která ořezává desetinná místa.

    Dim ObjFS,ObjStream,cislo,pocet,i,text
    pocet=10 ‚ pocet tipů v souboru.
    ‚ Vytvoření instance objektu FileSystemObject
    Set ObjFS=Server.CreateObject(„Scripting.FileSystemObject“)
    ‚ otevření souboru
    Set ObjStream=ObjFS.OpenTextFile(„SOUBOR.TXT“)
    ‚ výběr náhodného řádku
    Randomize
    cislo= Int(Rnd *pocet)
    for i=1 to cislo
      ObjStream.SkipLine
    next
    text=ObjStream.ReadLine
    ‚ zavření souboru a zrušení instancí objektů
    ObjStream.Close
    Set ObjStream=Nothing
    Set ObjFS=Nothing
    ‚ vypsání tipu dne na obrazovku
    response.write(„Tip pro tento den:“&text)

    Pokud je návštěvnost serveru větší, je lépe načíst Tipy do proměnné Application a v ASP stránce se pak pouze odkazovat na tuto proměnnou:

    Sub Application_OnStart Dim ObjFS,ObjStream,pocet,i,text
    pocet=10 ‚ pocet tipů v souboru.
    ‚ Vytvoření instance objektu FileSystemObject
    Set ObjFS=Server.CreateObject(„Scripting.FileSystemObject“)
    ‚ otevření souboru
    Set ObjStream=ObjFS.OpenTextFile(„SOUBOR.TXT“)
     Application.lock
    for i=1 to pocet
     Appliaction(„tip“&i)=ObjStream.ReadLine
    next
    Appliaction(„tippocet“)=pocet
    Application.unlock
    ‚ zavření souboru a zrušení instancí objektů
    ObjStream.Close
    Set ObjStream=Nothing
    Set ObjFS=Nothing
    End Sub

    V Global.asa v události Application_OnStart provedeme načtení do proměnné Application a na ASP stránkách se pouze na tuto proměnou odkazujeme – nemusíme při každé návštěvě stránky otevírat a zavírat soubor.

    Randomize
    response.write(„Tip pro tento den:“&Application(„tip“& Int(Rnd*Application(„tippocet“))+1))

    Někteří z vás namítnou, že to samé jde udělat pomocí JavaScriptu. Ano, i to je řešení, ale má tyto nevýhody: stránka obsahuje všechny tipy (díky tomu se natahuje delší dobu) a řešení pomocí JavaScriptu nefunguje při vypnutých scriptech.

    Tímto jednoduchým příkladem využití práce s textovými sobory pro dnešek končím a příště se budu věnovat vlastnostem souborů.

  • Štítky: Články

    Mohlo by vás také zajímat

    Nejnovější

    Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *