Hirdetés

Alkalmazásfejlesztés badára: Fájlok és könyvtárak

A mai bejegyzés során a badás fájlkezeléssel fogunk foglalkozni. A keddi posztban az egyes névterek függvényeinek a telefon háttértárán és a memórián lévő mappákra vonatkozó írási és olvasási jogait vettük górcső alá, ma pedig megnézzük a File és a Directory osztályokat. De mindenek előtt álljon itt pár fontos dolog a bada alatti fájlkezeléssel kapcsolatban!

Minden gyes bada alkalmazás kap egy saját könyvtárat (ez a /home) telepítéskor, amelyet alapértelmezett esetben nem érhet el egyetlen egyéb program sem. Természetesen van rá mód, hogy bizonyos erőforrásokat láthatóvá tegyünk egyéb alkalmazások számára, erre szolgálnak a /home/shared mappák. A bada abszolút útvonalakkal dolgozik, a relatív címzést elfelejthetjük; ez azt jelenti, hogy a fájlrendszer-beli útvonalakat teljes terjedelmükkel leírva kell megadnunk. Ráadásul oda kell figyelnünk a kis- és nagybetűkre, mivel case sensitive a rendszer. A fájl- és könyvtárműveleteket kezelőkön (handler) keresztül valósíthatjuk meg, ezekből állományok esetében egyszerre 100, könyvtáraknál pedig 30 aktív kapcsolatunk lehet.

A File osztály alapvető fájlműveletek elvégzésére szolgál, mint a létrehozás, törlés és módosítás. Az osztályhoz tartozik egy segédosztály, az Osp::Base::FileAttributes, mellyel további információkat lehet lekérni az állományokról a GetFileAttributes() függvénnyel. Az így kapott objektumtól ez után néhány függvény segítségével elkérhetjük a tulajdonságokat, mint például az utolsó módosítás időpontját (GetDLastModifiedTime()), a méretet (GetFileSize()), ellenőrizhetjük, hogy rejtett állománnyal van-e dolgunk (IsHidden()) és további hasonló attribútmokat tudhatunk meg.

A könyvtárkezeléshez nem kettő, hanem három Osp::Io névtérbe tartozó osztály tartozik. A Directory tartalmazza a mappákkal kapcsolatos műveleteket reprezentáló függvényeket, a DirEntry pedig a FileAttributes-hez hasonlóan a könyvtárral kapcsolatos információkat tárolja, mint a név, méret, írási jog stb. A harmadik osztály a DirEnumerator, amely a fájlrendszer bebarangolására szolgál, de a DirEntryket is a segítségével érhetjük el. Igazából sokkal találóbb lenne a DirIterator név, hiszen az osztály használata igazából egy mappa-alapú iterátorra hasonlít: a könyvtárak között a MoveNext() függvény hívogatásával váltogathatunk, egy adott mappa DirEntry-jét pedig a GetCurrentDirEntry() függvény meghívásával kérhetjük el tőle.

Az Osp::Io névtérnek a fentieken kívül még két nagyobb csoportja van: az adatbáziskezeléssel kapcsolatos osztályok és a registry-kezelők. Előbbivel már foglalkoztunk egy kicsit bővebben, utóbbira viszont visszatérünk a közeljövőben.

dr. Kind

Azóta történt

Előzmények