2012-12-12 4 views
2

예를 들어 소스를 입력 할 때 리소스의 I/O를 투명하게 처리하는 Java 용 라이브러리가 있습니까? 자바 프로젝트/폴더 또는 jar 아카이브?폴더/jar 파일에서 리소스를 읽을 때 입출력을 추상화하는 Java 라이브러리?

내가 할 때 내 응용 프로그램에서 리소스를 읽기 위해 동일한 코드를 사용하고 싶습니다 :

  1. 는 (소스) 이클립스에서 코드를 실행
  2. 실행에게 배포 된 응용 프로그램 (이진)
  3. 가져 오기를 폴더 (src/bin)의 자원 목록.

은 일반적으로 내가 할 : 소스와 자원을 가정 바이너리에서 모두 잘 작동

URL resource = this.getClass().getClassLoader().getResource("someResource.ext"); 

는 클래스 경로에 있습니다. 그러나 프로젝트의 일부에만 하위 폴더는 클래스 경로에 있으며하지의 내용은 (별도의 리소스로 모든 파일을 지정하는 것을 피하기 위해) : 나는 약간 낮은 수준을 spagetti을 할 필요가이 경우

project 
src 
resources 
    someResource.txt 
    subFolder 
     -> resA.txt 
     -> resB.txt 
     -> resC.txt 
      .... 

을 같은 :

http://www.java-gaming.org/topics/how-to-check-if-a-url-is-a-directory/21435/view.html

나는 apache.commons-IO를 보았다하지만 내가 필요 꽤하지 않습니다. src와 bin 모두에 대해 중첩 된 폴더/리소스를 처리하는 다른 라이브러리에 대한 제안 사항은 무엇입니까?

편집 :

내가 여기에 설명 된대로 URL 프로토콜 핸들러를 사용하려고 아래의 추천으로

:

JEditorPane with inline image

하지만 난 충분히 이해 모르겠습니다. 프로젝트에서 나는 내 폴더에 jar 파일에 대한 종속성이 :

내 응용 프로그램에서
myjar.jar 
myresources 
    > fileA.txt 
    > fileB.txt 
    > fileC.txt 

내가 할 :

JEditorPane with inline image

: DataConnection 및 처리기에서 복사

URL url = this.getClass().getClassLoader().getResource("myresources"); 
System.out.println(url.getPath()); 
Handler.install(); 
URLConnection con = new DataConnection(url); 
try { 
    inputStream = con.getInputStream(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

하지만 'myresources'폴더 내부의 리소스를 가져 오는 데 어떻게 도움이되는지는 알 수 없습니다. 나는 분명히 이것을 올바른 방식으로 사용하지 않고있다.

+0

정말 문제가되지 않습니다. 일반적으로 주어진 리소스는 클래스 패스에 있거나 그렇지 않습니다 ... classpath의 경우 완전한 이름 (package + resource)이 필요합니다. 다른 모든 경우에는 외부 경로 참조 또는 URL 클래스 로더를 사용할 수 있습니다. – home

+0

URL이 디렉토리 나 파일을 가리키는 지 확인하는 방법에 문제가 생길 수 있습니다. 나는 이것을 발견 할 수 있었다 : http://www.java-gaming.org/topics/how-to-check-if-a-url-is-a-directory/21435/view.htaccess Admin Home English Language Content – u123

답변

0

자바 7에는 zip file system과 파일 시스템의 다른 일반화가 있습니다.

물론 URL protocol handlers을 만들 수도 있습니다.

+0

URL 프로토콜 접근 방식에 문제가 있습니다, 내 편집 게시물을 참조하십시오, 어쩌면 당신은 어떤 입력이 있습니까? – u123

관련 문제