Fájlok és könyvtárak (Apache OpenOffice futásidejű programkönyvtár)
A fájlokkal végzett munka egyike egy alkalmazás alapvető feladatainak. Az Apache OpenOffice API számtalan objektumot biztosít az Office-dokumentumok létrehozásához, megnyitásához és módosításához. Ezekről további információért lásd: Az Apache OpenOffice API bemutatása. Ettől függetlenül előfordulhat, hogy közvetlenül el akarjuk érni a fájlrendszert, keresni akarunk könyvtárakban, vagy szerkeszteni szövegfájlokat. Az Apache OpenOffice Basic futásidejű programkönyvtára számos alapfüggvényt biztosít ezekhez a feladatokhoz.
Fájlok kezelése
Kompatibilitási mód
A CompatibilityMode utasítás és függvény nagyobb VBA-kompatibilitást biztosít azáltal, hogy bizonyos függvények működését módosítja. Az adott függvényre gyakorolt hatást a függvény leírásában közöljük, alább.
Utasításként a CompatibilityMode( érték ) egy logikai értéket vár, hogy a kompatibilitási mód be van-e vagy ki van-e kapcsolva. Függvényként a CompatibilityMode() egy logikai értéket ad vissza annak megfelelően, hogy a kompatibilitási mód be van-e vagy ki van-e kapcsolva.
CompatibilityMode( True ) 'mód bekapcsolása
CompatibilityMode( False) 'mód kikapcsolása
Dim bMode as Boolean
bMode = CompatibilityMode()
Keresés a könyvtárakban
Az Apache OpenOffice Basic Dir függvényével fájlokat és alkönyvtárakat kereshetünk a könyvtárakban. Az első meghíváskor a Dir függvény első paramétereként meg kell adni egy karakterláncot, amely tartalmazza az elérési utat, amelyben keresni akarunk. A Dir második paramétere megadja a keresendő fájlt vagy könyvtárat. Az Apache OpenOffice visszaadja az első megtalált könyvtárbejegyzést. A következő elem megkereséséhez a Dir függvényt paraméterek nélkül kell meghívni. Ha a Dir nem talál több elemet, üres karakterláncot ad vissza.
A következő példa bemutatja, hogyan érhető el az összes fájl egy könyvtárban a Dir függvény használatával. Az eljárás menti az egyes fájlneveket az AllFiles változóban, majd megjeleníti azt egy üzenetablakban.
Sub ShowFiles
Dim NextFile As String
Dim AllFiles As String
AllFiles = ""
NextFile = Dir("C:\", 0)
While NextFile <> ""
AllFiles = AllFiles & Chr(13) & NextFile
NextFile = Dir
Wend
MsgBox AllFiles
End Sub
A 0 (nulla) második paraméterként a Dir függvényben biztosítja, hogy a Dir csak a fájlok neveit adja vissza, a könyvtárakat nem. Itt a következő paraméterek adhatók meg:
- 0 : normál fájlokat ad vissza
- 16 : alkönyvtárak
A következő példa majdnem azonos az előzővel, de a Dir függvény a 16-ot kapja paraméterként, ami a mappa alkönyvtárait adja vissza fájlok helyett.
Sub ShowDirs
Dim NextDir As String
Dim AllDirs As String
AllDirs = ""
NextDir = Dir("C:\", 16)
While NextDir <> ""
AllDirs = AllDirs & Chr(13) & NextDir
NextDir = Dir
Wend
MsgBox AllDirs
End Sub
Könyvtárak létrehozása és törlése
Az Apache OpenOffice Basic az MkDir függvényt biztosítja a könyvtárak létrehozásához.
MkDir ("C:\SubDir1")
Ez a függvény könyvtárakat és alkönyvtárakat hoz létre. Az egy hierarchián belüli könyvtárak is létrehozhatók, ha szükséges. Ha például csak a C:\SubDir1 könyvtár létezik, akkor a
MkDir ("C:\SubDir1\SubDir2\SubDir3\")
függvényhívás létrehozza a C:\SubDir1\SubDir2 könyvtárat és a C:\SubDir1\SubDir2\SubDir3 könyvtárat is.
Az RmDir törli a könyvtárakat.
RmDir ("C:\SubDir1\SubDir2\SubDir3\")
Ha a könyvtár alkönyvtárakat vagy fájlokat tartalmaz, akkor azok is törlődnek. Éppen ezért elővigyázatosan kell használni az RmDir függvényt.
Fájlok másolása, átnevezése, törlése és létezésük ellenőrzése
A következő hívás létrehozza a Forrás fájl másolatát Cél néven.
FileCopy(Forrás, Cél)
A következő függvénnyel átnevezhetjük a RégiNév fájlt ÚjNév nevűre. Az As kulcsszó szintaxisa és az, hogy nincs vessző a függvényben a Basic nyelv gyökereire nyúlik vissza.
Name RégiNév As ÚjNév
A következő hívás törli a Fájlnév fájlt. Ha egy könyvtárat akarunk törölni (annak fájljaival együtt), akkor használjuk az RmDir függvényt.
Kill(Fájlnév)
A FileExists függvénnyel megállapíthatjuk, hogy egy fájl létezik-e:
If FileExists(Fájlnév) Then
MsgBox "A fájl létezik."
End If
Fájltulajdonságok beolvasása és módosítása
A fájlokkal végzett munka során néha fontos, hogy meg tudjuk állapítani a fájl tulajdonságait, az utolsó módosítás idejét és a fájl hosszát.
A következő hívás a fájl néhány tulajdonságát adja vissza.
Dim Attr As Integer
Attr = GetAttr(Fájlnév)
A visszaadott érték egy bitmaszk, amely a következő értékeket tartalmazhatja:
- 1 : csak olvasható fájl
- 16 : könyvtárnév
A következő példa beolvassa a test.txt fájl bitmaszkját, és megállapítja, hogy a fájl csak olvasható-e, és hogy könyvtár-e. Ha egyik sem, akkor a FileDescription változóhoz a "normál" karakterláncot rendeli.
Dim FileMask As Integer
Dim FileDescription As String
FileMask = GetAttr("test.txt")
If (FileMask AND 1) > 0 Then
FileDescription = FileDescription & " csak olvasható "
End IF
If (FileMask AND 16) > 0 Then
FileDescription = FileDescription & " könyvtár "
End IF
If FileDescription = "" Then
FileDescription = " normál "
End IF
MsgBox FileDescription
A SetAttr függvénnyel módosíthatók egy fájl tulajdonságai. A következő függvény csak olvashatóvá teszi a fájlt.
SetAttr("test.txt", 1)
Ha a fájl csak olvasható, akkor ez a következő függvénnyel állítható vissza:
SetAttr("test.txt", 0)
A fájl módosításának utolsó dátuma és ideje beolvasható a FileDateTime függvénnyel. Itt a dátum a rendszer területi beállításainak megfelelően lesz formázva.
FileDateTime("test.txt") ' Utolsó módosítás dátumának és idejének beolvasása
A FileLen függvény beolvassa egy fájl hosszát bájtban (hosszú egész számként).
FileLen("test.txt") ' Beolvassa egy fájl hosszát bájtban.
Szövegfájlok írása és módosítása
Az Apache OpenOffice Basic sokféle módszert biztosít a fájlok olvasására és írására. A következő példák a szövegfájlokkal (és nem a szöveges dokumentumokkal) végzett munkát mutatják be.
Szövegfájlok írása
Mielőtt egy szövegfájlhoz hozzá lehetne férni, meg kell nyitni azt. Ehhez egy szabad fájlkezelő szükséges, amely egyértelműen azonosítja a fájlt a hozzáféréshez.
A FreeFile függvénnyel lehet szabad fájlkezelőt létrehozni.
FileNo = FreeFile
A FileNo egy egész számot tartalmazó változó, amelybe a fájl kezelője kerül. Ezt a kezelőt kapja meg paraméterként az Open utasítás, amely megnyitja a fájlt.
Ha szövegfájlként akarjuk megnyitni a fájlt, az Open utasítást a következőképpen kell használni:
Open Filename For Output As #FileNo
A Filename egy karakterlánc, amely tartalmazza a fájl nevét. A FileNo egy kezelő , amelyet a FreeFile függvény hozott létre.
Ha a fájl meg van nyitva, akkor a Print utasítással lehet írni bele sorról sorra:
Print #FileNo, "Ez egy tesztsor."
A FileNo itt is a fájlkezelő. A második paraméter a fájlba egy sorként menteni kívánt szöveg.
Ha az írási folyamat befejeződött, a fájlt le kell zárni a Close utasítással:
Close #FileNo
A fájlkezelőt itt is meg kell adni.
A következő példa bemutatja egy szövegfájl megnyitását, írását és bezárását.
Dim FileNo As Integer
Dim CurrentLine As String
Dim Filename As String
Filename = "c:\data.txt" ' Fájlnév megadása
FileNo = FreeFile ' Szabad fájlkezelő létrehozása
Open Filename For Output As #FileNo ' Fájl megnyitása (írási módban)
Print #FileNo, "Ez egy tesztsor." ' Sor mentése
Print #FileNo, "Ez egy másik tesztsor." ' Sor mentése
Close #FileNo ' Fájl bezárása
Szövegfájlok olvasása
A szövegfájlokat ugyanúgy lehet olvasni, mint írni. A fájlok megnyitásához használt Open utasítás a For Input kifejezést tartalmazza a For Output helyett, és az adatokat író Print parancs helyett, a Line Input utasítást kell használni az adatok olvasásához.
Végül, amikor a program olvassa a szövegfájlt, az eof utasítással ellenőrzi, hogy elérte-e a fájl végét.
eof(FileNo)
A következő példa bemutatja, hogyan olvasható be egy szövegfájl:
Dim FileNo As Integer
Dim CurrentLine As String
Dim File As String
Dim Msg as String
' Fájlnév megadása
Filename = "c:\data.txt"
' Szabad fájlkezelő létrehozása
FileNo = FreeFile
' Fájl megnyitása (olvasási módban)
Open Filename For Input As FileNo
' Fájlvég ellenőrzése
Do While not eof(FileNo)
' Sor beolvasása
Line Input #FileNo, CurrentLine
If CurrentLine <>"" then
Msg = Msg & CurrentLine & Chr(13)
end if
Loop
' Fájl bezárása
Close #FileNo
Msgbox Msg
Az egyes sorokat a Do While ciklus olvassa be, és tárolja az Msg változóban, majd a program ezt megjeleníti egy üzenetablakban.
Content on this page is licensed under the Public Documentation License (PDL). |