Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Java
INI soubory v Javě
java
17. dubna 2002, 00.00 | V minulosti jeden stěžejních souborů pod Windows. V současné době je převálcovaly registry. Existuje však oblast, ve které jsou stále vítané.
Úvodem: Vím, že označení INI soubor pro to, co zde budu popisovat asi není přesné, ale zdá se mi to jako nejbližší přirovnání. Proto mne omluvte.
V minulosti jeden stěžejních souborů pod Windows. V současné době je převálcovaly registry, přesto existuje oblast, ve které jsou stále vítané. Onou oblastí může být Java.
Právě proto, že Java není vázána pouze na tuto platformu, není schopná ukládat svoje data do registrů. Což je i logické, protože na jiných systémech vůbec takovéto registry nejsou. Do popředí nám tu zde tedy povstávají INI soubory. Je nutno si přiznat, že INI soubor, vytvořený javáckou aplikací se v pár ohledech odlišuje, oproti tomu co znáte z Windows.
Ten základní rozdíl je v tom, že tento soubor má uložené jednotlivé klíče s daty v sekcích tj. např.:
|
Tato nová vlastnost by se z počátku mohla zdát jako překážka. Obzvláště používáme-li několik sekcí se stejnými klíči. Ale při podrobnějším prozkoumání zjistíme, že to zase až tak velká překážka není. Není totiž nic jednoduššího než před každý klíč vložit název sekce. Výsledně to tedy může vypadat takto:
|
Z předcházejícího je ovšem jasné, že tímto způsobem sice docílíte dobré čitelnosti, ale INI soubor se tak může dosti zvětšit. Možná, že postupem času si zvyknete na to, vytvářet rovnou unikátní názvy. To ale často není možné u automatizovaných metod, které např. ukládají nějaké vlastnosti stejných objektů, zde se právě hodí ten předchozí přístup. Nic vám ovšem nebrání v tom, abyste si je upravili podle své libosti.
Další rozdíl v INI souborech Windows a Javy se nachází v kódování. Javácké INI soubory jsou standardně psány v ASCII. To krásně vyhovuje pro angličtinu, avšak pro jiné jazyky jako je např. čeština je to nevhodné. A přičteme-li k tomu, že se Java nachází na množství jiných operačních systémů, pak nám z toho logicky vyplívá, že zde bude nějaké standardní kódování. Ano, oním kódováním je Unicode, do kterého se právě převádějí všechny znaky, které nejsou v ASCII. V textu to vypadá následovně.
Znaky jako \, tab, newline, a carriage return jsou zapisovány jako \\, \t, \n, a \r. Taktéž jsou zapisovány znaky #, !, =, : aby nemohla nastat chyby při čtení. Mimoto znaky menší než 20h resp. větší než 7Eh jsou zapisovaný Unicodeovým zápisem tj. \uXXXX, kde XXXX je hexadecimální hodnota znaku.
Toto vše je sice dobré vědět, už jen pro případ, že budete potřebovat nějaký soubor přečíst či ručně napsat. Ovšem v programu nás to moc zajímat nebude, protože vše by se mělo odehrávat bez našeho vědomí.
KonkrétněNejdříve se podíváme na to, jak nějaký INI soubor vytvořit. Je to vcelku jednoduché vytvoříte si objekt třídy Properities a do něj se pak pomocí metody setProperty vkládají jednotlivé klíče s jejich hodnotami1. Takto naplnění objekt se pak uloží do objektu třídy FileOutputStream. Navíc můžete přidat komentář, které se následně ve vytvořeném souboru objeví jako řádka začínající #.
|
Tento příkládek vytvoří soubor new.ini a vněm bude komentář + dva klíče s hodnotami.
Nyní si můžeme ukázat, jak takovýto soubor číst. Celý postup zůstává téměř nezměněn, až na to, že budeme používat FileInputStream místo FileOutputStream, metodu load místo store a metodu get místo setProperty. Příkládek, pak může vypadat takto:
|
Tento class je nutno spustit s parametrem INI souboru, který chcete nechat zobrazit.
Myslím si, že jako názorný příklad by to mohlo stačit. Nějaké důmyslnější použití resp. implementace je už jen na vás. Zde zmíněné příklady si můžete stahnout v archivu inifile.zip.
1. – Při vložení stejného klíče se samozřejmě stará hodnota přepisuje novou.
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007