2012-07-02 46 views
3

我有一个zip文件包含一个文件夹和里面的文件夹我有一些图像file.I希望提取这些images.Wowever但我一直没能找到任何东西。我一直在寻找zipMe,但一直未能找到任何相关的帮助。解压缩/提取黑莓中的Zip文件

下面是我迄今为止开发的代码。

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

迭代所有ZipEntry在您的zip文件中startUnzipping(您只在第一个代码中工作)。该项目对应的子文件应该有名称,比如“文件夹名/”。