2012-11-14 3 views
0

내 상황은 다음과 같습니다. packA 곳에 classA이 있고, 에 file.txt이 있습니다. classA에서 나는 액세스 file.txt이 사용하고 있습니다다른 패키지에서 파일에 액세스

InputStreamReader in = new InputStreamReader(new FileInputStream("/packB/resources/file.txt"), "UTF-8"); 

그러나 불행하게도 그것은 나에게 예외 보여줍니다

이 java.io.FileNotFoundException : \ packB 자원 \ \ file.txt를합니다 ( 지정을 경로를 찾을 수 없음)

+0

코드와 오류 메시지가 일치하지 않습니다. 코드는''resources "'를 사용하지만 에러 메시지는''ressources ''라고 말합니다. – hmjd

+0

@hmjd : 게시물이 업데이트되었습니다. 감사합니다. – Adil

답변

2

FileInputStream 클래스는 파일 시스템 경로를 기반으로 파일 시스템에서 파일을 엽니 다.

하지만 분명히하려는 것은 클래스 경로를 통해 위치한 리소스를 여는 것입니다. Class.getResourceAsStream(String)을 사용해야합니다.

1

다음과 같이 사용하십시오. 패키지 이름 앞에 /가 접두사로 사용됩니다. YourClass는 packA로 간주됩니다.

InputStream stream = YourClass.class.getResourceAsStream("/packB/resources/file.txt"); 
2

file.txt이 응용 프로그램과 함께 제공되는 경우 파일 시스템을 사용하여 액세스하면 안됩니다. 응용 프로그램이 jar 파일로 패키지화되어 파일이 파일 시스템에 있지 않을 수 있습니다. 대신 자원으로 액세스해야합니다

InputStreamReader in = new InputStreamReader(getClass().getResourceAsStream("/packB/resources/file.txt"), "UTF-8")); 
0

당신은 파일 경로에서 후행 /를 제거하고 classA.class.getClassLoader().getResourceAsStream("packB/resources/file.txt")를 사용해야합니다.

관련 문제