使用绝对路径来调用 ClassLoader getResourceAsStream() 方法

16

我想使用ClassLoader的getResourceAsStream()方法。

我的目录结构如下:

Project1

 -src
  -main
   -java
  -webapp
   -WEB-INF
-MYLOC
-someprops.properties

classloader.getResourceAsStream("MYLOC/someprops.properties")可以正常工作。

但现在我必须将属性文件移到.war之外,例如C:\someprops.properties

然而,classloader.getResourceAsStream("C:\someprops.properties")无法工作。它不能使用绝对路径吗?

2个回答

22
如果您有本地文件路径,则不需要使用 getResourceAsStream ,只需以常规方式创建 FileInputStream 即可。
Properties props = new Properties();
FileInputStream in = new FileInputStream("C:\\someprops.properties");
try {
  props.load(in);
} finally {
  in.close();
}

(如果文件很大)您可能希望将 FileInputStream 包装在 BufferedInputStream 中。


2

classloader.getResourceAsStream方法在类路径上查找资源。如果您想使用classloader.getResourceAsStream加载您的someprops.properties文件,请将其添加到类路径中。否则,如果这是一个属性文件,您可以始终使用Properties.load方法。


好的,我明白了这一部分,但是资源的加载是在另一个不属于我的jar文件中完成的,所以我无法访问它们加载文件的方式,但我只能根据需要更改文件的位置,并且someprops.properties的路径与我的war相关。 - user3018487

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接