2012-09-11 2 views
0

Eclipse의 프로젝트에서 내 리소스 폴더에 파일이 있습니다. 이 문서를 Java 파일에로드하는 방법이 필요합니다. 바람직한 표현은 InputStream에 있습니다. Eclipse for Java의 리소스 폴더에서 파일을 가져 오는 방법

는 나는 일부 검색에 따라 다음 있지만 작동하지 않는 것 그리고 (내가 널 수), 어떤 도움이 자원이 동일한에 위치 확인

InputStream is = getClass().getResourceAsStream("/Project/resources/BlankPDF.pdf"); 

답변

0

당신이 getResourceAsStream에 인수로 전달하는 문자열이 될 수 중 하나를 당신이에서 getResourceAsStream 전화 클래스 또는 절대 w.r.t.에 위치 상대 소스 폴더 중 하나가 /입니다.

resources이 프로젝트의 소스 폴더 인 경우 (Eclipse에서 작은 패키지와 비슷한 기호로 표시) getClass().getResourceAsStream("/BlankPDF.pdf")이 작동해야합니다.

예 : 프로젝트에서 다음 폴더 및 패키지를 말해봐, 소스 폴더가 *으로 표시되고 : 및 MyClass.class.getResourceAsStream("../../../BlankPDF.pdf") (/, 절대 선도) 다음

Project 
    src* 
     com.package.foo 
      MyClass.java 
    resources* 
     BlankPDF.pdf 

모두 MyClass.class.getResourceAsStream("/BlankPDF.pdf") (NO /을 선도하고, 상대) 파일을 가져와야합니다.

+0

또는 ClassLoader.getResourceAsStream ("BlankPDF.pdf") –

0

을 평가하는 이유는 확실하지 않다 시도 폴더를 컴파일 된 클래스로 만듭니다. 나는 이클립스를 사용하지 않지만 Netbeans은 빌드시 자동으로 "classes"폴더를 생성한다. 패키지에있는 클래스 (예 : org.website.PDFReader)는 '클래스'폴더 아래에 클래스의 정규화 된 이름 (예 : 패키지 이름 + 클래스 이름)에 따라 하위 디렉토리 집합을 갖습니다. 그럼에도 불구하고 이러한 패키지 클래스의 '상위 디렉토리'는 여전히 '클래스'폴더입니다.

당분간 리소스를 해당 클래스 폴더에 수동으로 배치하십시오. Eclipse가 자동으로 빌드 할 때 리소스를 적절한 폴더에 복사하는 방법은 거의 확실합니다 (아래 참조).

마지막으로, 코드에서 제거

당신이 "/"최고의 것을 제거, 그것의 부모 디렉토리에 자원 한 위치를 만든다 "/"에서 "/ 프로젝트/..."최고의 당신의 클래스의 클래스 로더 -이 예제에서는 'classes'폴더입니다. 슬래시를 계속 사용하면 리소스 위치가 '절대'가되며 상위 디렉토리와 관련이 없습니다.

편집 : 다음 질문은이 프로세스에 대한 Eclipse 관련 세부 사항에 대한 도움이 될 것입니다 : Java in Eclipse: Where do I put files on the filesystem that I want to load using getResource? (e.g. images for an ImageIcon). 수락 된 답변에 대한 첫 번째 의견도 확인하십시오.

관련 문제