Image
30.6.2016 0 Comments

Programujeme pre Android /13. časť

V tejto časti seriálu budeme pokračovať v procese vývoja vzorovej aplikácie db_sync. Zameriame sa na prácu so súbormi. V prvom rade uvedieme základné fakty týkajúce sa súborových systémov (file systems), ktoré dokáže využiť OS Android. Následne v stručnosti opíšeme triedy a metódy, ktoré budeme používať pri práci so súbormi v rámci našej vzorovej aplikácie.

Súborové systémy využívané Androidom

Skutočnosť, že operačný systém Android využíva linuxové jadro, má priamy súvis so súborovými systémami, ktoré dokáže využiť (spravovať), a takisto aj s hierarchiou zložiek (súborov). Základom hierarchie je jednoduchý integrovaný strom zložiek (súborov) začínajúci sa zložkou „/“ (koreň – root stromu). Do koreňovej zložky sú zahrnuté všetky ostatné zložky (súbory) vrátane zložiek reprezentujúcich ostatné médiá (interné či externé).

Cestou (path) sa rozumie časť integrovanej stromovej štruktúry vedúca ku konkrétnej zložke (súboru), resp. dátovému médiu. Absolútnou cestou je cesta začínajúca sa zložku „/“. Android používa koncept pripájania (mount) a odpájania (umount) zložiek (médií) známy z prostredia Linuxu. Stromovú štruktúru delí na internú (internal flash drive) a externú (external drive) časť (priestor). Stále pritom hovoríme o jedinom integrovanom strome, ktorého jednotlivé zložky tvoria tzv. prípojné body (mount points) či už pre súborové systémy, alebo pre ostatné médiá (napr. karty SD). Všetky súborové systémy sú teda vždy súčasťou spoločnej stromovej hierarchie.

Operácie so zložkami (súbormi), resp. médiami využívajú abstraktnú vrstvu jadra nazývanú VFS (Virtual File System). Konkrétnou implementáciou VFS sú aj súborové systémy. Tie sú implementované vo forme modulov jadra (zabudované v jadre, resp. dynamicky nahrávané) a využívané v okamihu zadania požiadavky na pripojenie konkrétneho súborového systému, resp. zariadenia.

Najčastejšie používané súborové systémy Androidu sú:

pre pamäte flash pre ostatné médiá pre „pseudo“ systémy
exFAT, F2FS, JFFS2, YAFFS2 EXT2 / EXT3 / EXT4, MSDOS, VFAT cgroup, rootfs, procfs, sysfs, tmpfs


Podobne ako v Linuxe je na kompletnú správu hierarchie stromu nevyhnutné vystupovať ako administrátor (root). Iba vtedy možno vidieť a modifikovať všetky časti stromu. Štruktúru stromu možno prezerať napr. pomocou ADM s privilégiami konkrétneho používateľa.

Hierarchia systémových zložiek smartfónu Samsung SM-G357FZ, zobrazená nástrojom Android Device Monitor

Aj keď sú všetky uvedené fakty štandardom, ten sa nie vždy úplne dodržiava a niektorí výrobcovia zariadení sa od neho viac či menej odchyľujú. Nám nezostáva nič iné ako na tieto odchýlky reagovať a prispôsobiť im svoje aplikácie.

Hierarchia systémových zložiek

Napriek tomu, že usporiadanie zložiek najvyššej úrovne (top level) nemusí byť na všetkých zariadeniach rovnaké, spoločný koncept vychádza z nasledujúcej štruktúry:

acct evidencia (accounting) používateľov
cache úložisko dočasných údajov
d, etc, sdcard, vendor symbolické odkazy na /sys/kernel/debug, /system/etc, /mt/sdcard, /system/vendor
data, dev, mnt prípojné body pre /dev/block/mtdblock1, tmpfs – dostupné zariadenia, interné / externé karty SD a ostatné súborové systémy
init aplikácia vykonávajúca skript init.rc – konfigurácia zariadenia po štarte
proc, sbin prístup k dátovým štruktúram jadra, binárne súbory démonov
root domáca zložka používateľa root
sys, system objekty a vlastnosti objektov zariadení jadra, zložky pôvodne zaradené do koreňa štandardného linuxového stromu

Práca so súbormi a aplikácia db_sync
Dôvod, pre ktorý sme sa rozhodli pracovať so súbormi v rámci aplikácie db_sync, je umožniť používateľom pridávať do tabuliek databáz súbory ľubovoľných typov, čo je bežná funkcionalita podobných aplikácií. Tento článok tvorí úvod k téme práce so súbormi. Teórii, ako aj praktickej implementácii sa budeme venovať aj nabudúce.Práca so súbormi a aplikácia db_sync

Trieda File
V prvom rade sa musíme oboznámiť s triedou File, ktorá je určená na vykonávanie rôznych činností so zložkami (directory) a súbormi (file). File je abstraktná reprezentácia entity identifikovanej cestou – relatívnou či absolútnou. Entita (zložka, súbor) nemusí pri vytvorení objektu triedy File existovať.

Pri práci s objektmi triedy File vychádzame z principiálneho delenia úložného priestoru Androidu na interný a externý priestor. To platí aj v prípade, že v našom zariadení nemáme nijaký externý disk. Rozdiely sú nasledujúce:

interný priestor externý priestor
vždy dostupný, ale iba z aplikácie, ktorá priestor vlastní nemusí byť vždy dostupný (napr. po vybratí karty SD), obsah môže čítať ľubovoľná aplikácia 
po odinštalovaní aplikácie systém zmaže obsah priestoru po odinštalovaní aplikácie systém zmaže obsah priestoru, iba ak bol vytvorený v zložke sprístupnenej pomocou getExternalFilesDir()
bez nutnosti povolenia prístupu pred použitím musí byť aplikácii povolený prístup v manifeste WRITE_EXTERNAL_STORAGE
sprístupnenie zložky getFilesDir() s voľne dostupným obsahom getExternalStoragePublicDirectory()
so súkromným obsahom – obsah bude odstránený po odinštalovaní aplikácie getExternalFilesDir()

Diagram reprezentujúci proces uloženia (upload) súboru (napr. s obrázkom) na webový server

Pri práci so súbormi budeme v princípe využívať triedu FileInputStream (BufferedInputStream), pomocou ktorej načítavame údaje (bajty) zo súborov a triedu FileOutputStream (BufferedOutputStream), pomocou ktorej ukladáme údaje (bajty) do súborov. Používame pri tom konkrétne metódy read() a write().

Pri prenose súborov medzi zariadením a webovým serverom využijeme triedu Base64. Tá obsahuje nástroje na zakódovanie a dekódovanie binárnych údajov (napr. obrázkov) na ich textovú reprezentáciu (nevyhnutná na korektný prenos obsahu obrázkov na webový server) v súlade s pravidlami kódovania MIME Base64 Content-Transfer-Encoding (RFC2045).

 

 

Zobrazit Galériu
Autor: Marek Sopko

Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

ITPro

Red Hat a Veracomp: Open source a cloudy

09.12.2016 12:05

Cieľom ďalšej z radu spoločných akcií firiem Red Hat a Veracomp Slovakia v Bratislave bola prezentácia produktov, služieb a stratégií týkajúcich sa najhorúcejších tém IT podpory biznisu s využitím naj ...

ITPro

Právne okienko

08.12.2016 12:02

1. Ako postupovať, ak obchodník nechce uznať reklamáciu tovaru objednaného z e-shopu? V takomto prípade môžu nastať v zásade dve situácie. Ak zákazník reklamuje tovar do 12 mesiacov od jeho kúpy, mož ...

ITPro

Red Hat Forum 2016: Otvorená digitálna transformácia

09.12.2016 11:51

Podujatím v Prahe pre región CENE (stredná a severná Európa) rezonovala komunitná atmosféra a snaha o spoluprácu podľa pravidla „každý s každým“. IT musí priniesť do digitálneho biznisu novú kultúru a ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá