2012-03-25 6 views
1

jar 파일의 폴더를 읽으려고합니다. jar 형식이 아닌 경우 제대로 작동하지만, jar 파일을 사용할 때 nullpointerexpcetion을 반환합니다. 파일이나 디렉토리jar 파일의 디렉토리에있는 파일 읽기

그래서를 찾아, 여기 내가있는 방법 ....

public void preloadModelsTwoOLD() { 
    String slash = System.getProperty("file.separator"); 
    File file = new File("."+ slash +"Patches" + slash+"Models"+slash); 
    File[] fileArray = file.listFiles(); 
    for(int y = 0; y < fileArray.length; y++) { 
     String s = fileArray[y].getName(); 
     if (s != "") { 
     byte[] buffer = readFile("."+ slash +"Patches" + slash+"Models"+slash+""+s); 
     Model.method460(buffer, Integer.parseInt(getFileNameWithoutExtension(s))); 
     //System.out.println("Read model: " + s); 
     } 
    } 
} 

기본적으로이 병 내부의 자바 파일에 그리고 항아리는 파일이이 디렉토리가 나는 읽을 필요가있다

메인 폴더에있다. 기본 폴더/클래스/패치/모델 하지만 클래스 파일이 클래스 폴더에서 읽어 그래서 내가 왜 제대로 읽기 아니에요에 관해서는이

./patches/models/+i+.dat 어떤 아이디어처럼이 두 형식이 아닌 경우 jar 형식으로 작동 할 수 있도록 수정하는 방법은 무엇입니까? 도움을 주시면 감사하겠습니다.

+0

가능한 복제본 [JAR 파일 안에 파일을 어떻게 나열합니까?] (http://stackoverflow.com/questions/1429172/how-do-i-list-the-files-inside-a-jar- 파일) – Snicolas

답변

1

JAR 파일은 자원으로 처리됩니다.

당신은

+0

어떻게이 방법을 사용합니까? – Travs

+0

그러면 클래스 로더를 사용하여 '패키지'에있는 리소스 목록을 가져올 수 있습니다. classloader.getResources()가 목록을 제공해야합니다. 사용법에 대한 예제는 –

1

당신은 파일이 방법을 사용하지 말아야에서 읽을의 InputStream API를 사용하여 다음

InputStream fileStream = getClass().getResourceAsStream("dir1/dir2/file1") 

을 사용해야합니다 경로는 당신이 디렉토리에 대한 절대 또는 상대입니다 자바를 실행합니다.

당신은 또한 this resource 내가 추가 한 중복이

URL url = getClass().getResource("<path relative to the dir containing the .class file of invoking class>"); 
File file = new File(url.toURI()); 

를 사용하는 것을 선호합니다.

+0

snippets.dzone.com/posts/show/4831을 참조하십시오. 이제 알았습니다. \t \t InputStream fileStream = getClass(). getResourceAsStream ("."+ 슬래시 + "패치"+ 슬래시 + "모델" + 슬래시); \t \t File [] fileArray = fileStream.listFiles(); 그러나 listFiles()의 자원에 대한 유효한 메소드가 아니며 자원의 경우는 무엇입니까? – Travs

+0

죄송합니다. 내 답변 작성자를 업데이트합니다. – Snicolas

관련 문제