2012-07-02 6 views
3

폴더가 포함 된 폴더가 있고 이미지 파일이있는 폴더 안에 있습니다.이 이미지를 추출하고 싶습니다. 아무 것도 찾을 수 없었습니다.보고 있습니다. zipMe하지만 관련 도움말을 찾을 수 없었습니다.블랙 베리의 압축 해제/압축 해제 파일

아래 코드는 지금까지 개발 한 코드입니다.

ZipEntry dataZE; 
    InputStream isData; 
    StringBuffer sbData; 
    ZipInputStream dataZIS; 

    String src = "file:///store/home/user/images.zip"; 
    String path = "file:///store/home/"; 
    String fileName = ""; 
    FileConnection f_Conn; 

    public UnZipper() { 

     debugger("Unzipper constructor"); 

     try { 
      f_Conn = (FileConnection) Connector.open(src); 
     } catch (IOException e) { 
      debugger("f_conn error :" + e.getMessage()); 
     } 

     try { 
      isData = f_Conn.openInputStream(); 
     } catch (IOException e) { 
      debugger("f_conn error getting ip_stream:" + e.getMessage()); 
     } 

     sbData = new StringBuffer(); 

     dataZIS = new ZipInputStream(isData); 

     debugger("got all thing initialized"); 

    } 

    public void run() { 

     debugger("unzipper run"); 

     try { 
      startUnziping(); 
     } catch (IOException e) { 

      debugger("Error unzipping " + e.getMessage()); 
     } 

     debugger("finished..."); 

    } 


    private void startUnziping() throws IOException { 

     debugger("startUnziping"); 
     dataZE = dataZIS.getNextEntry(); 
     fileName = dataZE.getName(); 
     writeFile(); 
     dataZIS.closeEntry(); 

     debugger(">>>>>>>>>>> : " + fileName); 
    } 

    private void readFile() throws IOException { 

     debugger("readFile"); 
     int ch; 
     int i = 0; 
     while ((ch = dataZIS.read()) != -1) { 

      debugger((i++) + " : " + sbData.toString() 
        + " >>> writting this.."); 
      sbData.append(ch); 
     } 

    } 

    private void writeFile() { 

     debugger("writting file..."); 
     FileConnection f_Conn = null; 
     byte[] file_bytes = new byte[sbData.length()]; 
     file_bytes = sbData.toString().getBytes(); 

     try { 
      readFile(); 
     } catch (IOException e) { 
      debugger("Error while reading " + e.getMessage()); 
     } 

     try { 
      f_Conn = (FileConnection) Connector.open(path + fileName); 
     } catch (IOException e) { 
      debugger("getting f_conn" + e.getMessage()); 
     } 

     if (!f_Conn.exists()) { 
      // create the file first 
      debugger("I know file does not exists"); 
      try { 
       f_Conn.mkdir(); 
      } catch (IOException e) { 
       debugger("Oops!!! error creating fle : " + e.getMessage()); 
      } 
     } 
     try { 
      f_Conn.setWritable(true); 
      debugger("file is nt writeable"); 
     } catch (IOException e) { 
      debugger("cannot make it writeable : " + e.getMessage()); 
     } 
     OutputStream lo_OS = null; 
     try { 
      lo_OS = f_Conn.openOutputStream(); 
      debugger("got out Stream hero!!!"); 
     } catch (IOException e) { 
      debugger("cant get out Stream !!!"); 
     } 
     try { 
      lo_OS.write(file_bytes); 
      debugger("yess...writtent everything"); 
     } catch (IOException e) { 
      add(new LabelField("Error writing file ..." + e.getMessage())); 
     } 
     try { 
      lo_OS.close(); 
      debugger("now closing connection..."); 
     } catch (IOException e) { 
      debugger("error closing out stream : " + e.getMessage()); 
     } 

    } 
} 

나는 내가 그 이미지를 추출해야하는 방법을 알아낼 수 없었다 그러나 이미지가 포함 된 ZipEntry를 나타내는 폴더를 얻을 수 있었다.

도움 주셔서 감사합니다.

답변

4

(모두 코드의 첫 번째 코드로만 작업하고 있음)의 zip 파일에 모두 ZipEntry을 반복합니다. 하위 파일에 해당하는 항목은 ""폴더 이름/파일 이름 "과 같은 이름이어야합니다.