Přeskočit na hlavní obsah

Příspěvky

Zobrazují se příspěvky z únor, 2011

Expanze proměnných – neobjevujte kolo

Možná jste už někdy řešili problém, jak nahradit proměnné jejich hodnotou třeba v konfiguračním souboru. Například ze vstupu <app-config baseDir="${projectDirectory}"> <timeout>${timeout}</timeout> </app-config> chceme ve výsledku dostat <app-config baseDir="C:\Projects\MyApp"> <timeout>30</timeout> </app-config> Asi vás napadne využít String.replaceAll(String, String) nebo v lepším případě přímo dvojice Pattern / Matcher a capturing groups . Proč ale znovu vymýšlet kolo, když knihovna Apache Commons Lang (která by mimochodem měla být standardní součástí každého netriviálního projektu) nabízí pro daný problém přesně ty třídy, které potřebujeme. Výchozím bodem je třída StrSubstitutor , která obsahuje i statické metody pro zjednodušení v nejpoužívanějších případech: Map<String, Object> properties = new HashMap<String, Object>(); properties.put("animal", "dog"); properties.put(

Zipujeme efektivně

Jedna ze základních vlastností Javy je práce se ZIP archívy, ať už jsou to knihovny tříd a spustitelné JARy, webové aplikace (war), nebo třeba JEE bumbrlíčci (ear). Není tedy divu, že i přímo v základním API je implementována práce s těmito archívy. Slouží k tomu třídy v balíku java.util.zip a nejzajímavější z nich jsou ZipOutputStream a ZipInputStream. Příkladem budiž vytvoření zipu: //Vytvorime Zip ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("javlog.zip")); //V Zipu chceme mit jeden textovy soubor zos.putNextEntry(new ZipEntry("priznani.txt")); //naplnime obsah textoveho souboru zos.write("Máme rádi Javu!".getBytes()); //zavrem entry (priznani.txt) zos.closeEntry(); //zavrem stream zos.close(); a jeho rozbalení: ZipInputStream zis = new ZipInputStream(new FileInputStream("javlog.zip")); ZipEntry zipEntry; //budem predpokladat, ze v ZIPu mame jen textove soubory a tak je vypisem do konzole while ((zipEntry = zis.getNextE