Fájlok és könyvtárak (Apache OpenOffice futásidejű programkönyvtár)

From Apache OpenOffice Wiki
Jump to: navigation, search
Book.png


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.

Documentation note.png Néhány DOS-specifikus fájl- és könyvtárfüggvény már nem támogatott az Apache OpenOffice programban, vagy csak korlátozottan használható. Például a ChDir, ChDrive és a CurDir függvény nem használható. Néhány DOS-specifikus tulajdonság már nem használható olyan függvényekben, amelyek fájltulajdonságokat várnak paraméterként (például a rejtett fájlok és rendszerfájlok megkülönböztetéséhez). Erre a változásra azért volt szükség, hogy az Apache OpenOffice platformfüggetlenségét a lehető legmagasabb szinten biztosítani lehessen.

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
Documentation note.png Az Apache OpenOffice Basicben a Dir függvény a 16-os paraméterrel csak a mappa alkönyvtárait adja vissza. A VBA-ban a függvény a normál fájlok neveit is visszaadja, így további műveleteket kell végrehajtani, ha csak a fájlok neveire van szükség. A CompatibilityMode ( true ) függvény használatával az Apache OpenOffice ugyanúgy működik, mint a VBA, és a Dir függvény a 16-os paramétert megadva az alkönyvtárakat és a fájlokat is visszaadja.
Documentation note.png A VBA egyéb keresési lehetőségei, konkrétan a rejtett, rendszer, archív és kötet fájltípusokra való keresés nem létezik az Apache OpenOffice programban, mert ezek a fájlrendszer-funkciók nem találhatók meg minden operációs rendszeren.
Documentation note.png A Dir függvényben megadott elérési utak tartalmazhatják a * és a ? helyettesítő karaktert a VBA-ban és az Apache OpenOffice Basicben is. Viszont az Apache OpenOffice Basicben a * helyettesítő karakter csak a fájlnév és/vagy kiterjesztés végén állhat, de VBA-ban ez nem így van.

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.

Documentation note.png A VBA-ban az MkDir és az RmDir függvény csak az aktuális könyvtárra vonatkozik. Ezzel szemben az Apache OpenOffice Basicben az MkDir és az RmDir több könyvtárszint létrehozására vagy törlésére is használható.
Documentation note.png A VBA-ban az RmDir hibaüzenetet jelenít meg, ha a könyvtár fájlt tartalmaz. Az Apache OpenOffice Basicben a könyvtár és abban minden fájl törölve lesz. Ha a CompatibilityMode ( true ) függvényt használjuk, akkor az Apache OpenOffice Basic úgy fog működni, mint a VBA.

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 </tt>RégiNév fájlt ÚjNév nevűre. Az <tt>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
Documentation note.png A VBA-ban használt jelzők (rejtett, rendszer, archív és kötetnév) nem támogatottak az Apache OpenOffice Basicben, mert ezek Windows-specifikus tulajdonságok, és csak részlegesen érhetők el más operációs rendszereken.

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).
Personal tools