- 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();
}
GoblinAlchemist 22.11.2012 14:43 # +3
guest 23.11.2012 15:54 # +1
GoblinAlchemist 23.11.2012 18:20 # 0
3.14159265 22.11.2012 16:09 # +2
Но сам код неплох. Говна в нем не вижу, вовсе.
И еще. Ваш расчудесный java.util.Properties не закроет reader сам. А 99.5% используют его именно так.
EvSpirit 22.11.2012 16:29 # 0
А про HashMap vs. HashTable - действительно важный момент, но опять же - смотря какая задача)
3.14159265 22.11.2012 16:56 # 0
Велосипед не есть плохо, когда собран хорошо и качественно и автор четко понимает зачем он делал так.
Вон, ссылка Романа ниже, там реально бесполезный треш.
EvSpirit 22.11.2012 17:34 # 0
Без велосипедов, увы, порой не обойтись, но, делая свой велосипед, нужно быть уверенным, что колеса у него не получатся квадратными)
3.14159265 22.11.2012 16:17 # 0
Хотя без остального кода понять говно это, или наоборот - хорошо и правильно - нельзя.
roman-kashitsyn 22.11.2012 16:32 # +1
Lure Of Chaos 23.11.2012 03:22 # +1
По-моему, тут автор вообще хотел локализацию, а это да, Properties и ResourceBundle.
3.14159265 23.11.2012 15:40 # 0
Ни один из них не deprecated
>да еще с Enumeration
Это зашито в StringTokenizer.
Lure Of Chaos 23.11.2012 15:46 # 0