2017-08-30 45 views
0

所以我有2个文件在同一个文件夹。 “example.csv”和“example.jpg”,但是当我运行这段代码时,我得到example.jpg的路径,但是加载example.csv会抛出一个Nullpointer。加载CSV文件抛出NullPointerException

System.out.println(this.getClass().getResource("/example.csv").getFile()); 
System.out.println(this.getClass().getResource("/example.jpg").getFile()); 

THX对于任何帮助

+0

堆栈跟踪的确切错误是什么?你有没有做过任何调试? – Carcigenicate

+0

你确定前面的'/'是文件名吗? – SHG

+1

重复的https://stackoverflow.com/questions/2593154/get-a-resource-using-getresource或https://stackoverflow.com/questions/2343187/loading-resources-using-getclass-getresource/41781868#41781868 – geneSummons

回答

1

我已经把.csv文件在我的类路径和读取静态方法的文件。所以请根据您的需要进行更改,但您应该可以通过这样做来阅读文件。

InputStream inputStream = ReadFile.class.getResourceAsStream("User.csv"); 
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); 
if (inputStream != null) { 
    System.out.println(" read csv file : "+reader.readLine()); 
} 
+0

thx做了jobb;) –

+0

@JohannesZahn:很高兴它有帮助。如果这有帮助,你能接受答案吗? –

0

使用的类装载的getResource方法搜索,所以:

您需要将您的文件在同一目录作为您的类文件,或指定目录的相对的到那个目录。下面的代码需要它们在类文件目录中。

要将它们放置在类文件目录中,请从文件名中删除“/”。

System.out.println(this.getClass().getResource("example.csv").getFile()); 
System.out.println(this.getClass().getResource("example.jpg").getFile()); 
1

调用getFile()是徒劳的。 getResource()在JAR文件中返回一个URL。它不是一个文件,不能被视为一个。您可以直接从URL或getResourceAsStream()直接获取InputStream

+0

我试过了,听起来很有希望 –

相关问题