本帖最后由 yting_xmei1129 于 2013-9-21 20:05 编辑
web程序中,在Servlet中读取资源文件用ServletContext,在其它的程序中(class)使用类加载器的方式读取资源文件,但是读取资源文件的时候会有点问题,就是类加载器的加载的时候只加载一次,所以文件更新后的问题就出来了,文件更新后读取不到;阅读下面代码。。。
//以下这种方式通过类加载器获得资源文件的数据,但是类加载器只加载一次,所以就算文件更新了,但是读的还是内存中
//的数据,无法读取更新后的数据
/*InputStream in = UserDao.class.getClassLoader().getResourceAsStream("db1.properties");
Properties pro1 = new Properties();
pro1.load(in);
String url1 = pro1.getProperty("url");
System.out.println("url="+url1);
*/
//通过类加载器的方式得到资源文件位置,再通过传统方式获得文件数据,这样可以得到更新后的数据(更新后的数据指的是文件被修改了)
String path = UserDao.class.getClassLoader().getResource("db1.properties").getPath();
FileInputStream fis = new FileInputStream(path);
Properties pro = new Properties();
pro.load(fis);
重点还是类加载器的问题、、、、、、理解了类加载器就好办了、、、
|