【发布时间】:2012-07-31 10:58:33
【问题描述】:
我正在使用 Eclipse,并且我在 mi src 文件夹之外创建了一个 res 文件夹。在其中,我创建了一个名为“config.cfg”的文本文件。看起来像这样:
# System configuration
# Comments will automatically be excluded by the program
radiomodemPort=20001
sisnetPort=5562
sisnetHost=213.229.135.3
sisnetUser=jogg
sisnetPass=jogg
为读取它而编写的代码不起作用:它不会加载任何存储的变量。我的代码是:
private String sisnetHost;
private int sisnetPort;
private int radiomodemPort;
private String sisnetUser;
private String sisnetPass;
private boolean sisnetHostLoaded;
private boolean sisnetPortLoaded;
private boolean radiomodemPortLoaded;
private boolean sisnetUserLoaded;
private boolean sisnetPassLoaded;
public boolean getSettingsFromFile(){
Properties config = new Properties();
try {
config.load(new FileInputStream("res/config.cfg"));
Enumeration<Object> en = config.keys();
while (en.hasMoreElements()) {
String key = (String) en.nextElement();
if(key.equals(sisnetHost)){
sisnetHost = (String)config.get(key);
sisnetHostLoaded = true;
}
if(key.equals(sisnetPort)){
sisnetPort = (Integer)config.get(key);
sisnetPortLoaded = true;
}
if(key.equals(sisnetUser)){
sisnetUser = (String)config.get(key);
sisnetUserLoaded = true;
}
if(key.equals(sisnetPass)){
sisnetPass = (String)config.get(key);
sisnetPassLoaded = true;
}
if(key.equals(radiomodemPort)){
radiomodemPort = (Integer)config.get(key);
radiomodemPortLoaded = true;
}
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
return false;
} catch (IOException ex) {
ex.printStackTrace();
return false;
}
if(!(sisnetHostLoaded && sisnetPortLoaded && sisnetUserLoaded && sisnetPassLoaded && radiomodemPortLoaded))
fillUnloadedSettings();
return true;
}
怎么了?
【问题讨论】:
-
尝试使用
System.out.println(new File("res/config.cfg").getAbsolutePath());并确认您确实获得了正确的文件。另外,你为什么要循环它而不是只做sisnetHost = config.get("<key>");等? -
尝试执行此操作 config.load(new FileInputStream("res/config.cfg")); System.out.println(config);结果如何?
-
首先尝试检查您提供的文件位置是否正确。你可以在 catch 部分尝试一些 print 语句来了解它是否真的抛出了一些错误。
-
@Thor84no 主要问题是 Costi 指出的:真是错过了!无论如何,感谢您对如何在没有循环的情况下改进代码的建议
标签: java properties resources settings