IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

2. diel - Úvod do práce so súbormi v Jave

V minulom dieli nášho seriálu tutoriálov o Jave sme si vysvetlili výnimky, ktoré k práci so súbormi nutne potrebujeme, pretože vďaka nim môžeme reagovať na prípadné chyby. Dnes si povieme niečo o súboroch všeobecne ao právach na zápis v systémoch Windows. Po dočítaní tohto tutoriálu budete pripravení so súbormi pracovať.

Dáta, resp. objekty uložené v pamäti, sa samozrejme s vypnutím aplikácie stratí. Ak chceme zabezpečiť, aby dáta bola tzv. Perzistentné (trvalá), musíme ich pri ukončení programu uložiť a pri načítaní programu opäť načítať. Na ukladanie dát aplikácie existuje mnoho spôsobov, každý má nejaké výhody a nevýhody. Všeobecne môžeme ukladať dáta našej aplikácie nasledujúcim spôsobom:

  • Textové súbory s jednoduchou štruktúrou (napr. .Txt a .csv)
  • textové súbory s vnútornou hierarchiou (napr. .xml alebo .json)
  • Súbory binárneho typu (jednoducho odtlačok pamäte do súboru)
  • databáza

Každý spôsob uloženia dát má svoje výhody a nevýhody. My si jednotlivé spôsoby v seriáli podrobne popíšeme a hlavne vyskúšame. Zameriame sa najmä na to, ako do súborov ukladať objekty a potom ich znovu načítať. Databázam sa potom venuje samostatná sekcia.

Práva na zápis v systémoch Windows

Windows 7 zapisovať práva UAC - Práca so súbormi v Jave

Od Windows Vista existuje v systémoch Windows tzv. UAC (User Account Control). Technológia zakazuje zápis na systémovej oblasti disku (najčastejšie C :) v prípade, že zápis nie je povolený administrátorom alebo že sa nejedná o zápis do osobných priečinkov používateľa. Toto opatrenie samozrejme naplnilo diskusné fóra o programovaní a rozbilo rad aplikácií. Dôležité však je, že toto opatrenie je správne a iba zabraňuje zle napísaným aplikáciám meniť čo sa im zapáči. Linuxové systémy majú podobné opatrenia už dlhú dobu.

Koncepcia systému Windows zahŕňa používateľské kontá. Každý užívateľský účet je realizovaný zložkou (väčšinou C: \ users \ ID užívateľa). Táto zložka obsahuje okrem iného dokumenty pracovnú plochu a tiež tzv. Zložku s dátami aplikácií. K tejto zložke sa možno dostať pri zadaní kľúča% appdata% do cesty. Skúste si% appdata% napísať do cesty prieskumníka a zložku otvoriť. Uvidíte, že v zložke má svoje podpriečinky mnoho aplikácií, ktoré máte nainštalované. Práve tu je miesto pre nastavenie vašich aplikácií a ďalšie dáta. Vaše aplikácie si tu samozrejme vytvorí zložku so svojim menom a do tej si bude všetko ukladať. Nebudeme obmedzovaní UAC a zároveň bude naša aplikácia umožňovať iné nastavenie pre rôznych užívateľov, bez toho aby sme to v Jave programovali. % Appdata% mieri vždy k appdata aktuálne prihláseného používateľa.

Veľkou chybou bolo, že si programy ukladali dáta do zložky s programom. Program na ploche alebo na starých Windows fungoval, však keď sa potom nainštaloval do priečinka program files na disku C, spadol s chybou pri zápise na disk. Windows tento zápis čiastočne pre určité aplikácie emuloval, ale tým sa nebudeme zaoberať. Problém možno samozrejme obísť tým, že aplikáciu spustíme ako správca, ale to je zlé riešenie.

V tomto tutoriále si ukážeme, ako vytvoriť v appdata zložku pre našu aplikáciu. V ďalších tutoriáloch už v kóde táto logika nebude obsiahnutá a budú slúžiť ako čo najjednoduchšie ukážka práce so súbormi. Ak budete aplikáciu prevádzkovať na svojom počítači, nemusíte sa o nič starať. Akonáhle ju však budete publikovať, je vhodné ju upraviť tak, aby appdata používala. Už teda vieme, kam budeme zapisovať. Výnimky sme si uviedli tiež. Presuňme sa teda k samotnej práci so súbormi.

Stream

V Jave existuje tzv. Stream, čo je všeobecný "dátový prúd". Na prúd sa napojíme a môžeme z neho potom načítavať dáta alebo doň dáta naopak zapisovať. Prúd je teoreticky univerzálny a ten istý prúd sa môže necházet v pamäti RAM alebo v súbore na disku. Práca so súbormi je teda realizovaná práve cez stream a všetky triedy, ktoré si v budúcnosti uvedieme, stream nejakým spôsobom obaľujú alebo s ním pracujú. My sme od neho však odtienené.

V tejto sekcii sa budeme v každom tutoriálu zaoberať jedným typom súboru a ukážeme si vždy tú triedu, ktorá je na to prispôsobená. Teraz si ukážme naprostý základ toho, ako vytvoriť pre našu aplikáciu zložku v appdata aktuálneho používateľa. Budeme k tomu používať triedu File, ktorá obsahuje metódy pre prácu so súbormi a zložkami. Poďme teda napísať aplikáciu, ktorá bude mať vlastný priečinok v AppData a pozrie sa, či existuje jej súbor databaze.dat.

String cesta = "";

cesta = System.getenv("APPDATA") + File.separator + "DevbookTutorial";
File fCesta = new File(cesta);
if (!fCesta.isDirectory())
{
        if (!fCesta.mkdirs())
        {
                System.out.printf("Nepodařilo se vytvořit složku %s, zkontrolujte prosím svá oprávnění.", cesta);
        }
}

File fDatabaze = new File(cesta + File.separator + "databaze.dat");
if (fDatabaze.exists())
{
        try
        {
                // Zde umístěte kód pro načtení vašeho nastavení ze souboru
        }
        catch (Exception e)
        {
                System.out.printf("Při načítání nastavení došlo k následující chybě: %s", e.getMessage());
        }
}
else
{
        try
        {
                // Zde umístěte kód pro vytvoření vašeho nastavení ze souboru
        }
        catch (Exception e)
        {
                System.out.printf("Při vytvoření nastavení došlo k následující chybě: %s", e.getMessage());
        }
}

Najprv si uložíme cestu k priečinku s našou aplikáciou do textového reťazca cesta. Lokácii appdata získame pomocou:

System.getenv("APPDATA")

Pre Windows 7 a 8 nám metóda vráti niečo takéto:

C:\Users\vase_jmeno\AppData\Roaming

Ak chcete, aby vaše aplikácie fungovala aj na ďalších operačných systémoch, budete musieť použiť nejakú knižnicu, ktorá toto rieši. Java k tomuto bohužiaľ neposkytuje vôbec žiadnu funkcionalitu.

Do cesty pridáme ešte zložku s menom našej aplikácie. Meno som zvolil DevbookTutorial, samozrejme si ho potom upravte. V cesta je teda teraz toto:

C:\Users\vase_jmeno\AppData\Roaming\DevbookTutorial

Ak daná zložka neexistuje (ide o prvé spustenie aplikácie), tak ju vytvoríme. Ďalej sa pozrieme, či existuje súbor, z ktorého chceme dáta načítať. Ak áno, vykonáme načítanie dát. Ak nie, súbor vytvoríme a nahráme do neho východiskovej dáta. Alebo súbor vytvárať ani nebudeme, záleží na type aplikácie.

Po spustení kódu sa nám v priečinku% appdata% objaví nová zložka:

Appdata a tvorenie zložky aplikácie v Jave - Práca so súbormi v Jave

Máme teda rýchly úvod, ako správne ukladať dáta aplikácie. O výnimkách sme si tiež povedali. Nič nám už nebráni, aby sme si nabudúce ukázali prácu s prvým formátom súborov, budú to textové súbory. Ešte radšej zopakujem, že v nasledujúcich tutoriáloch kvôli jednoduchosť nebudem riešiť zapisovať práva a programy budú fungovať len v dokumentoch NetBeans. Vždy sa teda vráťte sem a kód si upravte, ak hotovú aplikáciu budete chcieť šíriť.


 

Predchádzajúci článok
Výnimky v Jave
Všetky články v sekcii
Práca so súbormi v Jave
Preskočiť článok
(neodporúčame)
Práca s textovými súbormi v Jave
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity