Did you know that the OpenOffice.org Wiki has a WYSIWYG editor? See Help:FCKeditor

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

From OpenOffice.org Wiki

Jump to: navigation, search
Image:Book.png


A fájlokkal végzett munka egyike egy alkalmazás alapvető feladatainak. Az OpenOffice.org 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 OpenOffice.org 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 OpenOffice.org Basic futásidejű programkönyvtára számos alapfüggvényt biztosít ezekhez a feladatokhoz.

Image:documentation_note.pngNéhány DOS-specifikus fájl- és könyvtárfüggvény már nem támogatott az OpenOffice.org 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 OpenOffice.org 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 OpenOffice.org 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 OpenOffice.org 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
Image:documentation_note.pngAz OpenOffice.org 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 OpenOffice.org 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.


Image:documentation_note.pngA 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 OpenOffice.org programban, mert ezek a fájlrendszer-funkciók nem találhatók meg minden operációs rendszeren.


Image:documentation_note.pngA Dir függvényben megadott elérési utak tartalmazhatják a * és a ? helyettesítő karaktert a VBA-ban és az OpenOffice.org Basicben is. Viszont az OpenOffice.org 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 OpenOffice.org 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.

Image:documentation_note.pngA VBA-ban az MkDir és az RmDir függvény csak az aktuális könyvtárra vonatkozik. Ezzel szemben az OpenOffice.org Basicben az MkDir és az RmDir több könyvtárszint létrehozására vagy törlésére is használható.


Image:documentation_note.pngA VBA-ban az RmDir hibaüzenetet jelenít meg, ha a könyvtár fájlt tartalmaz. Az OpenOffice.org 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 OpenOffice.org 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
Image:documentation_note.pngA VBA-ban használt jelzők (rejtett, rendszer, archív és kötetnév) nem támogatottak az OpenOffice.org 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 OpenOffice.org 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
Create a book