2017-02-18 6 views
3

コード内でFileofNames.txtという名前のファイルを読みたい。しかし、このコードを実行すると、NullPointerExceptionが発生します。Intellijにテキストファイルを置く場所

URL url=ApacheCommonIOExample.class.getResource("src/Files/FileofNames.txt"); 
System.out.println(url.getPath()); 

私の質問はどこのファイルをintellijに置くことができるので、どのJavaソースコードからでも読むことができます。 Image of my directory 。現在、私のテキストファイルはsrc/Filesにあり、src/org/java.practice/FileName.javaから読みたいです。

答えて

4

Maven Standard Directory Layoutを使用していると仮定すると、リソースは/src/main/resources(または/src/test/resources)に配置する必要があります。説明

getResourcegetResourceAsStreamはコンテキストクラスをロードするために使用したのと同じクラスローダを使用してリソースをロードします

final InputStream stream = this.getClass().getResourceAsStream("/filename.txt"); 
final InputStreamReader reader = new InputStreamReader(stream); 
final BufferedReader buffered = new BufferedReader(reader); 
String line = buffered.readLine(); 

はその後、Javaコードを使用して、このような何かをロードしました。私の例では、thisクラスです。あなたのケースでは、クラスローダーはApacheCommonIOExampleです。これらは同じではないかもしれません。私の例では、リソースとクラスは同じ場所にあることが知られています。それは、それがmavenプロジェクトによって定義された方法であり、したがってそれについて言及しているからです。あなたの例では、ロードされたのと同じ場所からリソースをロードしようとしている可能性がありますApacheCommonIOExample

+0

この方法はそれほどありがとうございました!しかし、このコードを実行しようとすると、もう一度やり直してください。理由を教えてください。 'URL url = ApacheCommonIOExample.class.getResource("/FileofNames "); ファイルfile =新しいファイル(url.getPath()); if(file.exists()) System.out.print( "exists"); else System.out.print( "try again"); ' –

関連する問題