A mai bejegyzésben azt nézzük meg, hogy hogyan tudunk fájlokat mozgatni és másolni badában. Erre két módszer is van, az egyik az Osp::Io::File osztályt használja, a második pedig a direkt erre szakosodott ContentManagerUtil osztály segítségét hívja a művelethez.
Az Osp::Io::File osztály statikus törlő, másoló és mozgató függvényeket hív, a használata nagyon egyszerű, a függvények bemenő paraméterei magukért beszélnek, egyedül a Copy metódus boolean bemenője szorul némi magyarázatra. Ha igazra állítjuk a flaget, hibaüzenetet kapunk, ha a másolandó fájl már létezik a megadott helyen, hamis érték esetén nem foglalkozik az esetleges egyezéssel.
- Copy(String &srcFilePathName, String &destFilePathName, boolean failIfExist)
- Move (const Osp::Base::String &oldFilePathName, const Osp::Base::String &newFilePathName)
- Remove (const Osp::Base::String &filePathName)
A File osztály metódusainak használatakor azonban komoly korlátokba ütközünk, ha a telefonon található, a médiatartalmakat összegyűjtő /Media mappába szeretnénk másolni, ezt ugyanis nem éri el az osztály. Persze ezt is meg lehet oldani, erre szolgál a ContentManagerUtil osztály. Itt két, fájlműveletekre használható funkciót kapunk:
- CopyToMediaDirectory(Sting &srcPath, String &destPath)
- MoveToMediaDirectory(String &srcPath, String &destPath)
A használat itt is elég egyszerű, előtte viszont nem szabad elfelejteni az <FContent.h> header include-olását, valamint a megfelelő privilégium (LOCAL_CONTENT) felvételét a manifest.xml-be. Ennyivel azonban még nem vagyunk meg, mert bár a fájlunk fizikailag már a /Media folderben lapul, a telefon fájlkezelőjében nem látjuk azt, ehhez be kell regisztrálnunk egy ContentManager példányon keresztül. Ehhez meg kell adnunk az erőforrásra jellemző információkat, amelyet automatikusan, a ContentManagerUtil::CheckContentType(String &Path) függvénnyel. Badában hat különböző tartalomtípiust különböztetünk meg, így az előbbi metódus által visszaadott típussal kell majd operálnunk, az annak megfelelő ContentType-pal kell meghívnunk a ContentManager osztál CreateContent() függvényét. A típusok a következők:
Osp::Content::ContentType enumeráció | |||
---|---|---|---|
ContentType | Leírás | Hozzá tartozó Infó-osztály | |
CONTENT_TYPE_OTHER | egyéb típus | OtherContentInfo | |
CONTENT_TYPE_IMAGE | képek | ImageContentInfo | |
CONTENT_TYPE_AUDIO | audió fájlok | AudioContentInfo | |
CONTENT_TYPE_VIDEO | videótartalmak | VideoContentInfo | |
CONTENT_TYPE_UNKNOWN | .exe fájlok | OtherContentInfo |
Innen már nincs más dolgunk, mint megvizsgálni, milyen tartalomtípussal van dolgunk, létrehozni egy neki megfelelő ContentInfo osztálypéldányt, amelynek a Construct() függvényébe meg kell adnunk a fájl elérési útját, végül meg kell etetnünk a ContentManager::CreateContent() függvényt a kapott ContentInfo egyeddel.
dr. Kind