A cikksorozat első részében már készítettünk szövegfájlt, és írtunk is bele adatot, ám ez még nem fedte le az összes lehetőséget. Ebben a részben a kimaradt metódusokat és lehetőségeket mutatjuk be.
A bemutatandó módszer nem csak szöveges fájlok kezelésére alkalmas, de erre van a leginkább kiélezve. A fájlok kezeléséhez szüksége lesz a TextStream (szövegfolyam) objektumra. Ezt kétféleképpen kaphatjuk meg. Az egyik módszer, amikor egy új fájlt hozunk létre, és a cikksorozat első részében bemutatott CreateTextFile függvényt használjuk, illetve ennek párját, az OpenTextFile függvényt.
FileSystemObject.OpenTextFile(filename [, iomode [, create [, format]]])
A függvény megnyit olvasásra vagy írásra egy fájlt. A függvény visszatérési értéke egy TextStream objektum. Az első paraméter a fájl neve, amit kötelező megadni. A másik három paraméter opcionális. Az iomode paraméter a fájl megnyitásának módját adja meg. Az alábbi táblázatban a használható értékek láthatók:
| konstans |
iomode |
jelentés |
| ForReading |
1 |
a fájl megnyitásra olvasásra |
| ForWriting |
2 |
a fájl megnyitása írásra |
| ForAppending |
8 |
a fájl megnyitása írásra úgy, hogy az eredeti tartalomhoz fűzzük hozzá az új adatokat a fájl végére |
A harmadik paraméter a create, ami egy logikai érték. Ha igaz, akkor létrehozza a fájlt, ha az nem létezik. Az alapértelmezett értéke hamis, vagyis a nem létező fájlt nem hozza létre.
A negyedik paraméterben (format) megadhatjuk a fájl formátumát. Ezt konstans értékekkel tehetjük meg, az alábbi táblázat szerint:
| konstanst |
érték |
jelentés |
| TristateTrue |
-1 |
A fájl Unicode formátumú. |
| TristateFalse |
0 |
Normál fájl. |
| TristateUseDefault |
-2 |
A rendszer alapértelmezett formátuma. |
A második módszer, amikor egy File objektumhoz tartozó fájlt nyitunk meg TextStream-ként. Ehhez az OpenAsTextStream függvényt kell használnunk.
File.OpenAsTextStream([iomode[, format]])
A függvény tehát egy fájl objektumához tartozik (File), ezért előzőleg azt is le kell kérdezni, például a GetFile függvénnyel. Az előző függvénnyel ellentétben ennek csak két paramétere van, hiszen a fájlnév már adott a File objektumban (Name property), és az is biztos, hogy a fájl létezik. A fennmaradt két paraméter opcionális, és ugyanúgy kell használni, mint az OpentextFile függvénynél. Ennek a függvénynek a visszatérési értéke is egy TextStream objektum.
Most nézzük meg, hogy milyen metódusokat használhatunk, ha már megvan a TextStream objektumunk.
TextStream.Close
Ezzel az eljárással zárhatjuk le a fájlt.
TextStream.Read(characters)
A Read függvény beolvas a fájlból a characters paraméterben megadott számú karaktert. A visszatérési érték a beolvasott karaktersorozat (sztring).
TextStream.ReadAll
A fájl teljes tartalmát egyben beolvassa, és a beolvasott karaktersorozattal tér vissza. Csak kis fájlok esetén használjuk, mert nagy fájlok esetén sok memóriát kell a művelethez felhasználni. Ezeknél a fájloknál inkább soronként olvassuk be a tartalmat az alábbi függvénnyel.
TextStream.ReadLine
Beolvassa a szövegfájl aktuális sorát. A visszaadott eredmény nem tartalmazza az „új sor” karaktereket.
TextStream.Skip(characters)
A paraméterként megadott számú karaktert átlépi, azok nem kerülnek beolvasásra.
TextStream.SkipLine
A soron következő sor elejére ugrik a szövegfájlban. Ettől kezdve innen folytatódik a beolvasás.
TextStream.Write(string)
A string paraméterben megadott karaktersorozatot kiírja a fájlba. Az új sor karaktereket nem írja ki, ezért ha egy sort szeretnénk a fájlba írni, akkor használjuk a WriteLine, vagy a Write után a WriteBlankLines metódust.
TextStream.WriteLine([string])
Kiírja a megadott sztringet a fájlba. A sztring után az új sor karaktereket is kiírja. A paraméter opcionális, ha nem adjuk meg, akkor csak az új sor karaktereket írja ki.
TextStream.WriteBlankLines(lines)
A lines paraméterben megadott számú üres sort (új sor karaktert) ír ki a fájlba.
A TextStream objektumnak van négy property-je is, amelyekből a fájlbeli pozíciónkat tudhatjuk meg:
TextStream.AtEndOfLine
A property értéke igaz, ha éppen a sor végén (az új sor karakterek előtt) állunk a fájlban.
TextStream.AtEndOfStream
A property értéke akkor igaz, ha a fájl végén állunk. Ezt használhatjuk fel akkor, amikor a fájl tartalmát lépésenként (nem egyszerre) olvassuk be:
while not fs.AtEndOfStream do begin
s:=fs.ReadLine;
.....
end;
TextStream.Column
Ebből a property-ből megtudhatjuk, hogy az aktuális sorban melyik karakterpozícióban állunk.
TextStream.Line
Az aktuális sor sorszámát adja vissza.