1
我正在使用Eclipse,并且已经在mi src文件夹之外创建了一个res文件夹。其中,我创建了一个名为“config.cfg”的文本文件。看起来像这样:从Java中的文本文件中获取设置
# 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;
}
怎么了?
试着做了'系统。 out.println(新文件(“res/config.cfg”)。getAbsolutePath());'并验证你确实获得了正确的文件。另外,为什么你循环它而不是只是做'sisnetHost = config.get(“”);'等? –
Thor84no
2012-07-31 11:00:36
尝试做这个config.load(新的FileInputStream(“res/config.cfg”));的System.out.println(配置);结果是什么? – 2012-07-31 11:03:05
首先尝试检查您提供的文件位置是否正确。你可以在catch部分尝试一些print语句来知道它是否真的抛出了一些错误。 – heretolearn 2012-07-31 11:03:53