`

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` 是一个非常实用的方法,用于从类路径或者特定上下文中获取资源流,通常用来读取配置文件、图片、XML文档等静态资源。这个方法在处理与代码打包在一起的非代码文件时非常方便。...

    getResourceAsStream

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

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

    在Java编程中,`getClass().getResourceAsStream()`是一个非常实用的方法,用于从类路径(Classpath)中加载资源,如配置文件、图片、字体等。这个方法返回一个`InputStream`对象,可以通过它读取到资源文件的内容。...

    java项目中获取路径详解

    在 Java 项目中,读取包内文件可以使用 `getResourceAsStream` 方法。例如,`InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");` 可以读取包内的文件 `a.txt`。 Java Web 项目中...

    java读取项目中的文件(src目录下)

    在Java编程中,读取项目中的文件,特别是位于`src`目录下的文件,是一个常见的需求。这涉及到对项目结构的理解和使用Java I/O流的知识。`src`目录通常包含源代码文件,而运行时,这些文件会被编译并放置到类路径...

    Java路径问题

    本文将深入探讨Java路径问题,包括如何解决Java安装和使用过程中的常见路径问题,以及如何有效地管理类路径(classpath)。 #### 一、Java路径基础 Java路径主要涉及两种类型:类路径(classpath)和系统路径。类路径...

    Java路径问题最终解决方案.doc

    在Java中,可以使用ClassLoader的`getResource()`和`getResourceAsStream()`方法,以相对路径的方式查找类路径下的资源。 四、相对于当前用户目录的相对路径 例如:相对于System.getProperty("user.dir")返回的路径...

    如何在JAVA中添加图片

    为了在实际项目中更灵活地处理图片资源,开发者通常会将图片文件放入项目的资源目录,然后使用类加载器(`Class.getResource()`或`Class.getResourceAsStream()`)来获取图片的URL,以便在不同环境下都能正确加载。...

    java读取资源文件

    在Java编程中,读取资源文件是一项常见的任务,特别是在开发应用程序时,我们可能需要加载配置文件、图片、音频或视频等资源。在这个场景下,我们将深入探讨如何在IntelliJ IDEA(Idea)环境中读取资源文件,特别是...

    java文件路径获取

    在Java开发中,经常会遇到需要获取文件路径的情况,尤其是在处理配置文件、图片等资源时。本文将详细介绍Java中获取文件路径的各种方法及其应用场景,帮助开发者更好地理解和掌握这些技巧。 #### 二、基本概念 在...

    java Swing读取图片

    在Java编程中,Swing库提供了丰富的组件和功能来创建图形用户界面(GUI)。当我们需要在Swing应用中展示图片时,可以利用特定的方法来读取并显示图像。本篇文章将详细讲解如何在Java Swing中读取和显示图片,以及与...

    在Java程序中获取当前运行程序的路径

    首先,我们可以通过`java.lang.Class`类的`getResource`或`getResourceAsStream`方法来获取类路径中的资源文件路径。这两个方法都是在类路径中查找资源,返回一个URL对象,从中可以获取路径信息。例如,如果我们有一...

    Java Properties 解决中文乱码和顺序读写.docx

    Java Properties 类是Java标准库中...总之,Java Properties类是Java开发中处理配置文件的利器,通过它的方法可以方便地读取、修改和保存配置信息,尤其在处理包含中文字符的配置时,注意编码问题,确保数据的正确性。

    在Java中如何利用Applet来加载图像

    在Java编程语言中,Applet是一种特殊的类,它允许开发者创建可以在Web浏览器中运行的小型Java应用程序。Applets常用于创建交互式的Web内容,其中包括加载和显示图像。本篇文章将详细探讨如何在Java Applet中加载图像...

    Java读取资源文件时内容过长与换行的处理

    在Java开发过程中,经常会遇到需要读取资源文件的情况,比如配置文件、属性文件等。这些文件中的内容有时会非常长,或者为了提高可读性,需要进行换行处理。本文将详细介绍如何在Java中正确处理这种场景。 #### 一...

    java读写properties文件,解决系统找不到指定路径,解决写入后读取正常,但文件数据未更新问题

    在Java编程中,Properties文件是用于存储配置信息的关键组件,如数据库连接字符串、应用程序设置等。在处理Properties文件时,可能会遇到几个常见的问题,包括找不到指定路径、读取正常但文件数据未更新的情况。以下...

    java-loadresource.rar

    总之,理解并熟练运用`getResource`和`getResourceAsStream`是Java开发人员必备的技能之一,它们是连接Java代码与类路径中资源的关键桥梁。正确地使用这些方法,可以使得你的应用程序更加高效、可靠。

    Java路径问题最终解决方案之一.txt

    本文将深入探讨Java中的路径问题,并提供一个有效的解决方案,该方案旨在简化路径处理过程,使得开发者能够更加灵活地管理和访问不同环境下的资源。 #### 二、Java路径类型 Java中使用的路径主要分为两大类:绝对...

    JAVA获取各种路径总结

    在Java开发中,特别是在Web应用开发中,经常需要获取不同类型的路径,例如:当前Web应用的路径、特定文件的真实路径等。本文将详细讲解如何通过不同的方式来获取这些路径。 #### JSP中获取路径 1. **获取当前应用...

Global site tag (gtag.js) - Google Analytics