- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
public void load()
{
for(Language lang : Language.VALUES)
{
strings.put(lang, new HashMap<String, String>());
File f = new File(Config.DATAPACK_ROOT, "data/string/strings_" + lang.getShortName() + ".properties");
if(!f.exists())
{
log.warn("Not find file: {}", f.getAbsolutePath());
continue;
}
LineNumberReader reader = null;
try
{
reader = new LineNumberReader(new FileReader(f));
String line = null;
while((line = reader.readLine()) != null)
{
if(line.startsWith("#"))
continue;
StringTokenizer token = new StringTokenizer(line, "=");
if(token.countTokens() < 2)
{
log.error("Error on line: " + line + "; file: " + f.getName());
continue;
}
String name = token.nextToken();
String value = token.nextToken();
while(token.hasMoreTokens())
value += "=" + token.nextToken();
Map<String, String> strings = this.strings.get(lang);
strings.put(name, value);
}
}
catch(Exception e)
{
log.error("Exception: " + e, e);
}
finally
{
try
{
reader.close();
}
catch(Exception e)
{
log.error("Cannot close reader", e);
}
}
}
log();
}
Но сам код неплох. Говна в нем не вижу, вовсе.
И еще. Ваш расчудесный java.util.Properties не закроет reader сам. А 99.5% используют его именно так.
А про HashMap vs. HashTable - действительно важный момент, но опять же - смотря какая задача)
Велосипед не есть плохо, когда собран хорошо и качественно и автор четко понимает зачем он делал так.
Вон, ссылка Романа ниже, там реально бесполезный треш.
Без велосипедов, увы, порой не обойтись, но, делая свой велосипед, нужно быть уверенным, что колеса у него не получатся квадратными)
Хотя без остального кода понять говно это, или наоборот - хорошо и правильно - нельзя.
По-моему, тут автор вообще хотел локализацию, а это да, Properties и ResourceBundle.
Ни один из них не deprecated
>да еще с Enumeration
Это зашито в StringTokenizer.