使用 getClassLoader() 解析 .properties 文件

Parsing a .properties file with getClassLoader()

我正在编写一个 Java 程序,它接受一个 foo.properties 文件并将其解析为一个 Properties 对象。快速搜索后,我找到了这段代码:

public Properties getProperties() throws IOException{
    String fileIn = "foo.properties";
    Properties p = new Properties();
    InputStream inStream = getClass().getClassLoader().getResourceAsStream(fileIn);

    if(inStream != null) {
        p.load(inStream);
    } else throw new FileNotFoundException();

    return p;
}

我的问题涉及第 4 行:为什么上面的代码使用 InputStream inStream = getClass().getClassLoader().getResourceAsStream(fileIn),而不是简单地使用 FileinputStream fInStream = new FileInputStream(fileIn)?

getResourceAsStream() 可以从类路径而不是绝对位置加载文件。参考this excellent article

即使您的程序在 JAR 存储库中,您也可以加载 .properties 文件