A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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);

重点还是类加载器的问题、、、、、、理解了类加载器就好办了、、、




评分

参与人数 1技术分 +2 收起 理由
黄文伯 + 2 赞一个!

查看全部评分

1 个回复

倒序浏览
亲,如问题已解决请将分类的“未解决”改为“已解决”。
以后的问题贴也要及时更改分类哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马