2013-05-01 2 views
0

Eclipse에서 프로젝트를 내 보낸 후 .jar 파일 인 ZipFile을 Java에서 열려고합니다. 이것은 내가 작성한 코드입니다 :jar 파일의 ZipFile에 액세스하려고 시도 할 때 FileNotFoundException이 발생했습니다.

String modpath = "/ModByDNSYeti.zip"; 
URL url = this.getClass().getResource(modpath); 

ZipFile newTextures = new ZipFile(url.toString()); 

나는 항아리를 실행하면, 나는

FileNotFoundException이 얻을 : 파일 : "경로"

"경로"정확한입니다 path는 ZipFile입니다. 저기있어. 나는 그것을 hundered times로 지금 봤지만, 나는 무엇을 해야할지 알 수 없다. Eclipse에서 programm를 시작할 때 같은 오류가 발생합니다. Google은 나를 어느 곳으로도 데려 오지 못했습니다.

당신은 작동하지 않습니다 파일과 같은 리소스에 액세스하려고

답변

1

감사 DNSYeti - 당신이 FileNotFound 예외를 얻고있는 이유입니다. 그런 다음 ZIP 파일을 읽을 수있는 ZipInputStream를 사용할 수 있습니다

ZipInputStream zipInStream = new ZipInputStream(this.getClass().getResourceAsStream(modpath)); 

: 당신이 할 수있는 것은 스트림으로 리소스를 잡아와 ZipInputStream를 생성하는 데 사용할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 후속 질문이 있습니다. – DNSYeti

+0

나머지 메서드에서는 두 개의 ZipFiles가 하나의 ZipOutputStream에 병합됩니다. 나는 단순히 ZipFiles 중 하나를 ZipInputStream으로 대체 할 수 있지만 또 다른 문제가 발생할 수 있습니다. ZipInputStream이 ZipFutputStream에 의해 ZipOutputStream에 입력 된 항목을 무시하도록합니다. 이후 실제로 ZipOutputStream에있는 항목을 삭제할 수 없기 때문에 덮어 쓰는 ZipFile에 파일이 포함되어 있는지 확인해야합니다. 그렇지 않으면 ZipFile이 덮어 쓰여진 항목을 스트림으로 입력으로 덮어 쓰지 않습니다. 덮어 쓴 파일이 ZipInputStream 인 경우에는 작동하지 않습니다. – DNSYeti

+0

ZipInputStream이 zip에 임의로 액세스해야하는 경우에는별로 도움이되지 않습니다. 이 경우 .zip 파일을 .jar 파일에 넣지 않고 대신 .jar 파일과 함께 보내도록 고려할 수 있습니다. 또는 기본적으로 .jar의 .zip을 임시 파일로 복사 한 다음 임의 액세스에'ZipFile (String) '을 사용할 수 있습니다. – Marco

관련 문제