2014-06-06 2 views
0

나는 내 Java 프로그램에서 몇 개의 zip 파일을 추출하여 올바른 디렉토리에 넣으려고 노력해 왔습니다. 나는 참조 할 수 있도록이 떨어져 찾고있다 :Java에서 Zip을 추출 할 때의 문제

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
The method getInputStream(ZipEntry) is undefined for the type String 

at Main.main(Main.java:53) 
을 : 모든 것이 제대로 참조 위의 그에서 적응하는 것 같지만 내가 컴파일 할 때 그것이 나에게주는
   String ziplocation = "/home/user/folder/"; 
       String zipfile = "libraries.zip"; 
       String liblocation = "/home/user/folder"; 

       ZipEntry zipentry; 

       if (!zipentry.isDirectory()) 
       { 
        File fileFile = new File(liblocation + "/" + zipentry.getName()); 

        InputStream inputstream = zipfile.getInputStream(zipentry); 
        String str = new java.util.Scanner(inputstream).useDelimiter("/A").next(); 

        BufferedWriter bw = new BufferedWriter(new FileWriter(fileFile)); 
        bw.append(str); 
        bw.close(); 

       } 

처럼 이 http://javabeginnerstutorial.com/code-base/how-to-extract-zip-file-with-subdirectories/

내 현재 코드가 보인다

편집 :

는 지금

0으로 변경
   String ziplocation = "/home/user/folder/zipfile.zip"; 
       String liblocation = "/home/user/folder/"; 

       File file = new File(ziplocation); 
       ZipFile zipfile = new ZipFile(file); 
       InputStream inputStream = new BufferedReader(new FileReader(zipfile)); 

       ZipEntry zipentry; 

       if (!zipentry.isDirectory()) 
       { 
        File fileFile = new File(liblocation + "/" + zipentry.getName()); 

        InputStream inputstream = zipfile.getInputStream(zipentry); 
        String str = new java.util.Scanner(inputstream).useDelimiter("/A").next(); 

        BufferedWriter bw = new BufferedWriter(new FileWriter(fileFile)); 
        bw.append(str); 
        bw.close(); 

       } 

그러나이제 컴파일러와 함께 응답 :

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
Type mismatch: cannot convert from BufferedReader to InputStream 
The constructor FileReader(ZipFile) is undefined 

at Main.main(Main.java:48) 
+3

한 문서의 내용은''이다 zipfile' = ZipFile를 ZipFile를 새로운 ZipFile를 (파일)'. 귀하의 코드에서 그것은'String zipfile = "libraries.zip";'입니다. 오류 메시지에서 "* getInputStream (ZipEntry) 메서드는'String' *" – Pshemo

+0

Pshemo 유형에 대해 정의되지 않았습니다. 왜 응답을하지 않습니까? – hoefling

답변

0

그것은 문자열 객체가는 getInputStream 방법이 없음을 의미합니다. 이 줄에 : zipfile.getInputStream (zipentry);

zipfile은 문자열입니다.

과 같은 것이 필요합니다. InputStream inputStream = new BufferedReader (새 FileReader (zipfile));

IO의 좋은 논의는 여기에있다 스트림의 : http://docs.oracle.com/javase/tutorial/essential/io/streams.html

0

문제는 문장에 있습니다

InputStream inputStream = new BufferedReader(new FileReader(zipfile)); 

그 문장은 다음과 같다 예에 있지 않습니다. 대신 ZipFile를 안에있는 요소를 통한 루프가 :

File file = new File(zipFileLocation); 
ZipFile zipfile = new ZipFile(file); 

ZipEntry zipentry; 

System.out.println("nList of files in zip archive"); 
int fileNumber = 0; 
for (Enumeration<? extends ZipEntry> e = zipfile.entries(); e 
     .hasMoreElements(); fileNumber++) { 
    zipentry = e.nextElement(); 

    if (!zipentry.isDirectory()) { 
...