Java相对路径问题

时间:2014-04-26 01:59:17

标签: java relative-path

尝试使用Java中的相对路径解析文件路径时遇到问题。我不知道我在哪里失败了。你能帮帮我吗?谢谢!

@Test
public void testObjectNotNull() throws Exception{
    FileReader fileReader = new FileReader(getClass().getResource("./JavaPractice/resources/tests/codeeval/fileReaderTest.txt").toString());
    assertNotNull(fileReader);
}

例外:

java.lang.NullPointerException
    at components.com.codeeval.FileReader.FileReaderTest.testObjectNotNull(FileReaderTest.java:13)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

目录结构:

JavaPractice

- resources.tests.codeeval.fileReaderTest.txt(我试图访问的文件)

- tests.components.com.codeeval.FileReader.FileReaderTest.java(尝试访问上述文件的junit)

3 个答案:

答案 0 :(得分:0)

你的问题是因为这个

getClass().getResource("./JavaPractice/resources/tests/codeeval/fileReaderTest.txt")

为空。您正在读取类路径而不是相对路径本身 将您的代码更改为
getClass().getResource("tests/codeeval/fileReaderTest.txt")并确保资源文件夹位于类路径中。另请阅读loading from classpath

答案 1 :(得分:0)

资源不是文件。它们通常是JAR文件条目。您应该使用Class或ClassLoader的资源API。这可以返回一个InputStream。

答案 2 :(得分:-1)

试试这个

InputStream in = Your_Class.class.getClassLoader().getResourceAsStream("resources/tests/codeeval/abc.txt");

 assertNotNull(in);
 Reader fr = new InputStreamReader(in, "utf-8");