`

java中getResourceAsStream的问题

    博客分类:
  • J2EE
阅读更多

在项目使用getResourceAsStream()方法出现了问题:

 

在项目运行状态下property文件已经被改动了,但是使用getResourceAsStream()方法读取的文件没发生变化,还是和最初启动服务器时的一致。在网上查了一下,有人说是getResourceAsStream()方法读取新文件后会被java虚拟机缓存,而再次调用getResourceAsStream()方法时会先查找java虚拟机中是否有此文件,如果有则直接返回,如果没有才会去根据传入的name获取文件。

 

开始我写的代码:

 

    final Properties prop = new Properties();
    
    Property(String file){
        
        try {
            prop.load(this.getClass().getResourceAsStream(file));
        } catch (FileNotFoundException e) {
            e.printStackTrace(System.err);
        } catch (IOException e) {
            e.printStackTrace(System.err);
        }
    }

 改动后的代码:

 

    final Properties prop = new Properties();
    
    Property(String file){
        
        try {
            prop.load(new FileInputStream(this.getClass().getResource(file).getFile()));
            
        } catch (FileNotFoundException e) {
            e.printStackTrace(System.err);
        } catch (IOException e) {
            e.printStackTrace(System.err);
        }
    }

 这样,这样就不会出现缓存问题了。

需要说明一下的是,我这是java web项目,所以需要通过this.getClass().getResource(file).getFile()这样的代码来获取路径。

其中传入的文件名参数file可以是“/binessID.properties”这样的路径。

加上“/”表示从classpath下查找文件,不加“/”是从当前class类目录下查找。

这个可以参考http://lc9696lc.iteye.com/blog/737960

 

 

 

1
1
分享到:
评论
2 楼 chamcon 2010-10-11  
finallygo 写道
每次都要读取文件?这样的效率...建议加一个判断文件是否修改


嗯,你说得很对。。不过这段代码只是一部分,其实我在项目中只在服务器启动时实例化这个类,和特殊修改后再重新实例化。这样,这段代码很少执行,也就没进行判断。
1 楼 finallygo 2010-10-11  
每次都要读取文件?这样的效率...建议加一个判断文件是否修改

相关推荐

    Java中getResourceAsStream的用法.md

    Java中getResourceAsStream的用法.md

    Java中getResourceAsStream用法分析

    主要介绍了Java中getResourceAsStream用法,较为详细的分析了getResourceAsStream的功能及用法,需要的朋友可以参考下

    getResourceAsStream

    java getResourceAsStream种类,分我所知道的3种情况

    Java 使用getClass().getResourceAsStream()方法获取资源

    主要介绍了Java 使用getClass().getResourceAsStream()方法获取资源的相关资料,这里主要讲解哪种方式可以获取到文件资源,需要的朋友可以参考下

    java-loadresource.rar

    Java加载资源文件的两种方法getResource与getResourceAsStream

    java解析给定url

    * 现在要求用Java编写一个程序,该程序访问上面的URL,并从页面中, * 提取出上图所示位置的页面信息(仅图中所要求的内容),将其内容按如下格式,输出到控制台 * GrapWeatherInfo * @author lihsh * @version ...

    java类读取配置文件信息

    在java类里直接读取配置文件中的信息,用到的方法是this.getClass().getClassLoader().getResourceAsStream

    java读取配置文件的实例代码

    java项目读取配置文件的实例代码,使用class.getClassLoader().getResourceAsStream方法。

    Java连接数据库代码

    Java连接数据库代码实现代码, 代码片段: public MyTask(ServletContext context) { this.mContext = context; Properties prop = new Properties(); InputStream in = null; try { in = MyTask.class....

    aspose pdf 10.8.0 for java

    生成PDF都没问题,后来发现生成word文件的时候总是数组越界。 经过反复试验,终于搞定,拿来给需要的同学。 基本我测试过功能都能正常使用了。 使用语句之前,请先执行如下语句: License license = new License(); ...

    activiti部署中文乱码解决,亲测有效,替换三个文件

    activiti部署中文乱码解决,亲测有效, 1.activiti-webapp-explorer2\src\main\webapp\editor-app\i18n下en.json 2.activiti-webapp-explorer2\src\main\resources下 activiti-custom-context.xml ...

    利用Java发送邮件(含附件)的例子

    static { try { props.load(ReadPropertity.class.getClassLoader().getResourceAsStream( "utils.properties")); } catch (IOException e1) { e1.printStackTrace(); } } public static String getProperty(String...

    android-studio-unit-test-resource-issue-demo:演示执行单元测试时缺少Java资源的问题

    简而言之,当在Android Studio中执行(非Android)单元测试时,Java模块中的非Android资源将不可用。 因此,即使在现实世界中可以正常运行,以下代码在单元测试中也会失败(返回null)。 InputStream is = ...

    JavaExcel读写库JxlExcel.zip

    表示该列占用几列空间数据行(dataRow)数据行用于定义Java bean或者Map中的属性在模板中的显示或读写顺序,数据行中的dataCol不支持span读数据InputStream is = JxlExcelReaderTest.class  ....

    DruidJDBCUtils.java

    InputStream is = DruidJDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"); prop.load(is); ds = DruidDataSourceFactory.createDataSource(prop); } catch (IOException e) { e....

    uap-java8:基于 https 维护的数据的 Java8 User Agent 解析器

    这是基于收集的数据的 Java8 用户代理解析器实现。 为了使用这个解析器,你需要一个来自这里的解析器数据库版本: : 。 此文件不作为此存储库的一部分分发。 用法 Parser p = new Parser ( // Obtain this file ...

    Jonny023#Study#Java-加载properties文件1

    1、使用class变量的getResourceAsStream()方法 2、使用class.getClassLoader()所得到的java.lang.Clas

    读取Properties文件的java类

    is = ReadProperties.class.getClassLoader().getResourceAsStream( strFilePath); if (is == null) { WriteLog.writeLog("閰嶇疆鏂囦欢涓嶅瓨鍦紝璇锋鏌ユ枃浠跺悕鎴栬矾寰勬槸鍚︽纭紒"); ...

    Java简单音乐播放器播放wav文件示例.rar

    一个挺简单的Java音乐播放器,主要是播放wav格式的音频文件,其它格式暂不支持,代码比较早,确实是比较简单的例子,Java新手参考吧。源代码如下所示:  public MusicDemo() {  textbox=new TextBox("title",...

    java加载属性配置文件(properties文件)——从入门到进阶

    java加载属性配置文件[properties文件]什么是properties文件为什么要使用properties文件使用java加载properties文件的两种方式使用类的加载器获得输入流加载文件getResourceAsStream()介绍使用文件输入流加载文件...

Global site tag (gtag.js) - Google Analytics