【问题标题】:Use Absolute path for ClassLoader getResourceAsStream()使用 ClassLoader getResourceAsStream() 的绝对路径
【发布时间】:2023-03-20 07:29:01
【问题描述】:

我正在尝试使用 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") 不起作用。 不能用绝对路径吗?

【问题讨论】:

    标签: java classpath classloader absolute-path


    【解决方案1】:

    如果你有本机文件路径,则不需要使用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 的路径与我的战争有关
      猜你喜欢
      • 1970-01-01
      • 2014-09-11
      • 2013-10-02
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多