我的应用程序将检查属性文件是否存在,如果不存在则创建一个。
try{
// create new file
String path="c:\\temp\\LaserController.properties";
File file = new File(path);
String comport = "Comport=COM1";
String Parity = "parity=none";
String baud = "baud=9600";
String Stopbits = "StopBits=0";
String databits = "DataBits=8";
// if file doesnt exists, then create it
if (!file.exists()) {
file.createNewFile();
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
// write in file
bw.write(comport);
bw.newLine();
bw.write(Parity);
bw.newLine();
bw.write(baud);
bw.newLine();
bw.write(Stopbits);
bw.newLine();
bw.write(databits);
// close connection
bw.close();
}
但是当我尝试读取这样的属性文件时,我得到一个Null指针。
else {
Properties prop = new Properties();
InputStream input = LaserControllerUI.class.getResourceAsStream("c:\\temp\\LaserController.properties");
// load a properties file
prop.load(input);
// get the property value and print it out
System.out.println(prop.getProperty(Comport+"comport"));
System.out.println(prop.getProperty("Parity"));
System.out.println(prop.getProperty("Baud"));
input.close();
}
}catch(Exception e){
System.out.println(e);
}
}
它在InputStream input
行失败,但我不知道为什么。该文件存在,我的应用程序可以访问它,因为它首先将它放在那里。我做错了什么?
该文件必须位于用户可以访问的位置以更改参数。
答案 0 :(得分:5)
getResourceAsStream
方法需要"类路径相对"名称。您正在提供绝对路径。请尝试使用FileInputStream
。
E.g:
InputStream input = new FileInputStream("c:\\temp\\LaserController.properties");
答案 1 :(得分:3)
我建议使用Properties.save()
来确保在可以阅读时以格式编写。
我建议您查看文本文件以查看所写的内容。
BTW属性区分大小写。你写的
Comport
parity
baud
但你读了
Comport+"comport"
Parity
Baud
所以他们都是null
。
答案 2 :(得分:0)
将该文件移至资源文件夹或将该文件夹添加为资源文件夹
。的getClass()getClassLoader()的getResourceAsStream(" LaserController.properties&#34)。