如何从类路径加载属性文件?

Kas*_*aza 42 java

getResourceAsStream()java.lang.Class类的方法.此方法将具有给定名称的资源查找到类路径中.实际上这个方法委托给这个对象的类加载器.在这个示例PropUtil对象的类加载器中.但在委托之前,使用以下算法从给定的资源名称构造绝对资源名称.

Kev*_*edi 63

如果使用静态方法并从classpath文件夹加载属性文件,则可以使用以下代码:

//load a properties file from class path, inside static method
Properties prop = new Properties();
prop.load(Classname.class.getClassLoader().getResourceAsStream("foo.properties"));
Run Code Online (Sandbox Code Playgroud)

  • @CDT`Properties.load()`javadoc声明"_此方法返回后指定的流保持打开状态." (4认同)
  • 由getResourceAsStream打开的InputStream在加载后是否需要关闭? (2认同)

old*_*inb 56

final Properties properties = new Properties();
try (final InputStream stream =
           this.getClass().getResourceAsStream("foo.properties")) {
    properties.load(stream);
    /* or properties.loadFromXML(...) */
}
Run Code Online (Sandbox Code Playgroud)

  • 这是Java 7引入的"try with resources"语法.当try {}块退出时,流将自动关闭.在Java 7之前,您将在finally {}块中手动关闭此流.https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html (5认同)
  • @CDT`Properties.load()`javadoc声明"_此方法返回后指定的流保持打开状态." (2认同)
  • 根据我的经验,该文件需要从类路径中找到前导"/". (2认同)