2017-02-18 2 views
3

코드에서 FileofNames.txt라는 파일을 읽고 싶습니다. 하지만이 코드를 실행할 때 NullPointerException이 발생합니다.Intellij에 텍스트 파일을 넣을 곳

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

그래서 내 질문은 어디에 내가 java 소스 코드에서 읽을 수있는 intellij 파일을 넣을 수 있습니다. Image of my directory . 현재 내 텍스트 파일은 src/Files에 있으며 src/org/java.practice/FileName.java에서 읽고 싶습니다.

답변

4

Maven Standard Directory Layout을 사용한다고 가정하면 리소스는 /src/main/resources (또는 적절하게는 /src/test/resources)이어야합니다.

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

설명

getResourcegetResourceAsStream 컨텍스트 클래스를로드하는 데 사용한 것과 동일한 ClassLoader를 사용하여 리소스를로드합니다 :

는 다음과 같이 자바 코드, 뭔가를 사용하여로드. 내 예에서는 this 클래스입니다. 귀하의 경우 classLoader는 ApacheCommonIOExample입니다. 이것들은 같지 않을 수도 있습니다. 내 예제에서는 리소스와 클래스가 같은 위치에있는 것으로 알려져 있는데, 그 이유는 그것이 메이븐 프로젝트에 의해 정의 된 것이고 그에 대한 언급이기 때문이다. 귀하의 예제에서 그것은로드 된 동일한 위치에서 리소스를로드하려고 시도 할 가능성이 있습니다 ApacheCommonIOExample.

+0

이 방법을 사용해 주신 것에 대해 감사드립니다. 하지만이 코드를 실행하려고하면 인쇄가 다시 시도됩니다. 이유를 말해 줄 수 있습니까? URL url = ApacheCommonIOExample.class.getResource ("/ FileofNames"); 파일 file = 새 파일 (url.getPath()); if (file.exists()) System.out.print ("exists"); else System.out.print ("try again"); –