Soubory vlastností, property files Soubory vlastností, property files • Textové soubory formátu: řádek = záznam • Každý záznam má podobu: klíč=hodnota • Jsou to texty, je jen na nás, jak hodnotu interpretujeme. iconSize=24 iconImg=myico.png iconTitle=My icon Příklad použití import java.util.Properties; ... Properties iconProps = new Properties(); iconProps.loadFromXML(new FileInputStream("iconProps.properties")); int size = Integer.parseInt(iconProps.getProperty("iconSize"));  10 Java Properties Best Practices Konfigurace aplikace pomocí Properties ? • Chceme Properties pro nastavení/konfiguraci aplikace? • Možná jsou lepší alternativou java.util.prefs: • java.util.prefs.Preferences • Podobný princip jako "systémové registry" ve Windows nebo soubory .rc v Linuxu • Konfigurace specifická pro celý systém (=všechny uživatele dané aplikace) • Konfigurace specifická pro jednoho uživatele dané aplikace Kódování souborů vlastností • V předchozích verzích se pro načítání balíčků prostředků vlastností používalo kódování ISO- 8859-1 (=ISO Latin 1). • Je OK pro západní abecedy. • Již pro evropské východní nevyhovuje, pro asijské vůbec. 1 Soubory vlastností UTF-8 od Java 9 • V Javě SE 9 se soubory vlastností načítají v kódování UTF-8. • UTF-8 je mnohem pohodlnější způsob reprezentace nelatinkových znaků. • Načítač umí dokonce rozpoznat, kdy jsou v souboru .properties non-UTF-8 znaky, čili jedná se o starý formát ISO-Latin-1. Pak to načte opakovaně správně. Kompatibilita • Většina stávajících souborů vlastností by neměla být ovlivněna • UTF-8 a ISO-8859-1 mají stejné kódování pro znaky ASCII. • Lidsky čitelné ne-ASCII kódování ISO-8859-1 není platné UTF-8. • Pokud je zjištěna neplatná posloupnost bajtů UTF-8, běhové prostředí Javy automaticky znovu načte soubor v kódování ISO-8859-1. Pokud se vyskytne problém, zvažte následující možnosti: • Převeďte soubor vlastností do kódování UTF-8. • Zadejte systémovou vlastnost runtime pro kódování souboru vlastností, jako v tomto příkladu: java.util.PropertyResourceBundle.encoding=ISO-8859-1  blíže na Java 9 Internationalization 2