关于java读取配置文件的一个问题
我的web应用程序需要读取一个配置文件,有很多行初始化的数据.InputStream is =Thread.currentThread().getContextClassLoader().getResourceAsStream("book.csv");
List ls=getData(is);但是当我每次修改book.csv里面的属性时,需要重启才能读到修改后的值,
这个getContextClassLoader().getResourceAsStream是放在内存的嘛?
如何能够修改book.csv不重启就能读到,
如何清除这些放内存的东西,
谢谢....
我的web应用程序需要读取一个配置文件,有很多行初始化的数据.InputStream is =Thread.currentThread().getContextClassLoader().getResourceAsStream("book.csv");
List ls=getData(is);但是当我每次修改book.csv里面的属性时,需要重启才能读到修改后的值,
这个getContextClassLoader().getResourceAsStream是放在内存的嘛?
如何能够修改book.csv不重启就能读到,
如何清除这些放内存的东西,
谢谢....
查了下api才知道getResourceAsStream可以返回一个输入流。 不过直接用IO里的FileInputStream不就行了么 用那么长的getResourceAsStream有啥好处啊
用classloader()就可以免去好多的找不到文件的麻烦。
因为类加载器会在同一个加载点上开始查找配置文件。
如果你的配置文件在包
demo.config下面,文件是config.properties的话
那么你的流就可以直接使用getResourceAsStream("//demo//config//config.properties"),就可以了。
如果你直接使用FileInputStream的话,你的文件路径就不好定义。当然,不是不能实现,是会很麻烦。
修改属性后只能重启,
没有办法,这样不用重启可以读取修改后的属性文件
我用另外一个办法解决的,传输一个文件名
public static List getData(String filename) {
List ret = new ArrayList();
try{
FileReader fr = null;
fr = new FileReader(filename);
BufferedReader br=new BufferedReader(fr);
String line = null;
while( (line = br.readLine())!=null ){
// System.out.println("line:"+line);
ret.add(line);
}
br.close();
fr.close();
}catch(IOException e1){
e1.printStackTrace();
}
return ret;
}