使用 ClassLoader getResourceAsStream() 的 Absolute path

2022-09-04 01:21:51

我正在尝试使用ClassLoader getResourceAsStream()

我的 Direcory 结构如下:

Project1

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

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

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

但是,不起作用。它不能使用绝对路径吗?classloader.getResourceAsStream("C:\someprops.properties")


答案 1

如果你有一个本机文件路径,那么你不需要使用,只需以正常方式创建一个。getResourceAsStreamFileInputStream

Properties props = new Properties();
FileInputStream in = new FileInputStream("C:\\someprops.properties");
try {
  props.load(in);
} finally {
  in.close();
}

(如果文件很大,您可能希望将 包装在 中)FileInputStreamBufferedInputStream


答案 2

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


推荐