在使用Property和InputStream、OutputStream读取配置文件时,使用try/catch捕获IO异常时,发现下面的代码
FileOutputStream fileOutputStream = null;
JSONObject object = new JSONObject();
try (InputStream inputStream = TestController.class.getResourceAsStream("application-dev.properties")){
URL url = TestController.class.getClassLoader().getResource("application-dev.properties");
fileOutputStream = new FileOutputStream(url.getPath());
Properties properties = new Properties();
if (!Objects.isNull(inputStream)){
properties.load(inputStream);
}
properties.setProperty("writeProperty3", "you made it!");
properties.store(fileOutputStream, "写入属性");
} finally {
// inputStream.close();
fileOutputStream.close();
}
try()里面的inputstream资源通过当前类.class.getResoureAsStream("xx")
时无法获取,而通过Thread.currentThread().getContextClassLoader().getResoureAsStream("xx")
可以获取,有关解释是如果你使用当前类.class.getClassLoader()
,可能会导致和当前线程所运行的类加载器不一致。
有时间再深入探究下,先记录下来。
参考链接
网友评论