如标题中所述,我必须在java中读取.properties
文件并将其存储在Properties
对象中。我使用java swing中的jFileChooser
来获取实际工作的文件,然后我将文件作为调用参数传递给新窗口,然后我使用load()
方法将其存储在{{{ 1}}对象,但我得到Properties
错误。我希望我很清楚,试图解释它。
这是代码:
java.lang.NullPointerException
这是我将文件传递到其他窗口的方式:
public void actionPerformed(ActionEvent e3) { //when button is pressed
JFileChooser fc2 = new JFileChooser (new File("C:\\Users\\Ciurga\\workspace\\PropertiesManager"));
fc2.setDialogTitle("Load Default Values File");
fc2.setFileFilter(new FileTypeFilter(".properties", "Properties File"));
int result = fc2.showOpenDialog(null);
if(result == JFileChooser.APPROVE_OPTION){
df = fc2.getSelectedFile(); //getting selected file and storing it in "df" which will be passed as calling argument
defaultNameTextField.setText(df.getName());
}
}
这就是我尝试将其存储在public void actionPerformed(ActionEvent e1) {
FormWindow w1 = new FormWindow (df, lf); //when button is pressed, create new window passing the files i got with jFileChooser
}
对象中的方式:
Properties
谢谢大家,正如你所说,我只需要初始化它,现在它似乎工作正常,这是一个简单的错误,但我实际上是java的初学者。 这是我改变的:
private static Properties propDef;
private static Properties propLim;
private void run(File def, File lim) {
try {
propDef.load(new FileInputStream(def));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
propLim.load(new FileInputStream(lim));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(propDef.getProperty("name"));
}
答案 0 :(得分:0)
你从未初始化propDef,这就是为什么你得到NullPointerException。
如果你做了初始化,请提供代码!
答案 1 :(得分:0)
可能您的propDef
和propLim
为空,当您致电propDef.load(new FileInputStream(def));
时,您会获得NPE,因为load
方法是实例方法。