0

我检查了 java api 文档,它说getNextEntry()读取下一个 ZIP 文件条目并将流定位在条目数据的开头。

“读取 NEXT zip 文件”是什么意思?为什么是“下一个”?

我有这段代码,这行有什么意义 ze = zin.getNextEntry()?</p>

  public void unzip() { 
    try  { 
      FileInputStream fin = new FileInputStream(_zipFile); 
      ZipInputStream zin = new ZipInputStream(fin); 
      ZipEntry ze = null; 
      while ((ze = zin.getNextEntry()) != null) { 
        Log.v("Decompress", "Unzipping " + ze.getName()); 

        if(ze.isDirectory()) { 
          _dirChecker(ze.getName()); 
        } else { 
          FileOutputStream fout = new FileOutputStream(_location + ze.getName()); 
          for (int c = zin.read(); c != -1; c = zin.read()) { 
            fout.write(c); 
          } 

          zin.closeEntry(); 
          fout.close(); 
        } 

      } 
      zin.close(); 
    } catch(Exception e) { 
      Log.e("Decompress", "unzip", e); 
    } 

  } 
4

1 回答 1

6

它读取zip 文件中的下一个条目。

zip 文件在逻辑上包含主要的其他文件 - 因此foo.zip可以包含文件a.txtb.txt. 将getNextEntry()您移至存档中的下一个文件。

(我从来没有特别热衷于ZipInputStream使用继承来建模的方式InputStream,但那是另一回事。)

于 2013-02-16T19:55:08.653 回答