Thread.currentThread()。getContextClassLoader()。getResourceAsStream多次读取属性文件

时间:2014-06-07 03:07:16

标签: java

我有一个名为sysconfig.properties的属性文件,我想多次读取它,因为它是可变的。但是我发现当我更改了sysconfig.properties的内容然后我读了可以改变的内容,这是我第一次从systemconfig.properties文件读取时也一样.sysconfig.propertes文件的内容如下:

isInitSuccess=TRUE
isStartValid=2013

可能会在某个时候更改如下:

isInitSuccess=FALSE
isStartValid=2013

读取属性文件的代码如下:

InputStream inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath);     

我使用代码读取文件多次,但每次“isInitSuccess”为“TRUE”时,即使我更改了isInitSuccess = FALSE.Is系统只读了一次,然后我读了文件,它只是从内存中获取输入流? 但是当我使用下面的代码时,它会正常工作:

InputStream inStream = new FileInputStream(new File(strPath));
我用谷歌搜索,但我没有找到任何帮助,这个问题让我很困惑,任何帮助都会很感激。

1 个答案:

答案 0 :(得分:2)

您需要了解类路径是什么。

简而言之,Java有一个classpath的概念,它包含了它需要运行的所有资源(.class文件,.properties文件以及任何真正的文件)。当您使用ClassLoader#getResourceAsStream(String)时,您实际上获得了类路径资源的InputStream。此资源可以是磁盘上的物理资源,也可以是存档。

当您使用FileInputStream时,您将获得磁盘上文件的InputStream

InputStream中的ClassLoaderFileInputStream中的{{1}}与同一文件不对应。

您应该了解IDE(或任何构建系统)如何处理文件。