读取配置文件与类相同的目录返回null

时间:2017-08-29 08:01:31

标签: java

我不知道为什么我无法读取与我的班级处于同一级别的配置文件。我在下面尝试了两个代码,但两个输入流都是空的。

public MyClass
    public void getConfigurations()
    {
        String fileName = "myFile.conf";

        InputStream in = this.getClass().getResourceAsStream(fileName);
        InputStream inNew = this.getClass().getClassLoader().getResourceAsStream(fileName);
        System.out.println(in);
        System.out.println(inNew);
    }
    public static void main(String[] arg){
        MyClass myClass = new MyClass();
        myClass.getConfigurations();
    }
}

输出结果为:

null
null

这是我的目录

MyProject
    -src
        -com
            -test
                -MyClass.java
                -myFile.conf
    -lib

我打算将这个类打包成一个可执行的jar文件,所以我希望它可以在windows和linux中工作。 当我打包jar文件时,我希望配置文件与我的类处于同一级别。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

如果您不使用绝对路径(以/开头的路径),在这种情况下您将无法获取文件位置。

因为您执行.class文件,而不是.java文件。如果您使用相对路径在另一个文件夹中构建类,则路径基于.class文件的位置。

尝试将类文件放在与java文件相同的目录中。我想你现在把它们放在build文件夹中。

或者,尝试让它们像/src/com/test一样。这是绝对的道路。