教程集 www.jiaochengji.com
教程集 >  脚本编程  >  java  >  正文 用ant包实现zip文件解压的类

用ant包实现zip文件解压的类

发布时间:2018-10-28   编辑:jiaochengji.com
教程集为您提供用ant包实现zip文件解压的类等资源,欢迎您收藏本站,我们将为您提供最新的用ant包实现zip文件解压的类资源

 

    前一阵做东西的时候需要一个解zip的实现,开始只知道ant包的zip子包实现了对中文路径名的支持,感觉其他应该和util包中的zip子包没什么区别,但真写起来还是有点别扭的,毕竟它没有提供ZipInputStream类,因此只好用getEtries获得枚举类型的实体集,它的缺点就在于其破坏了实体间的级联关系,因此处理起来没有util.zip包方便了。

   代码有点东拼西凑的成分,就算是转贴吧,呵呵!!!



<span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.io.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;
</span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.util.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;
</span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.apache.tools.zip.ZipEntry;
</span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.apache.tools.zip.ZipFile;

</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Unzip </span><span id="_133_1382_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_133_1382_Open_Text"><span style="COLOR: #000000">{
  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">zipFileName为需要解压的zip文件,extPlace为解压后文件的存放路径,两者均须已经存在</span><span style="COLOR: #008000">
</span><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> extZipFileList(String zipFileName, String extPlace) </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000">
      Exception </span><span id="_287_1380_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_287_1380_Open_Text"><span style="COLOR: #000000">{
    ZipFile zipFile </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ZipFile(zipFileName);
    Enumeration e </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> zipFile.getEntries();
    ZipEntry zipEntry </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;
    </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (e.hasMoreElements()) </span><span id="_441_1355_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_441_1355_Open_Text"><span style="COLOR: #000000">{
      zipEntry </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (ZipEntry) e.nextElement();
      String entryName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> zipEntry.getName();
      String names[] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> entryName.split(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);
      </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> length </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> names.length;
      String path </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> extPlace;
      </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> v </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; v </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> length; v</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">) </span><span id="_680_1349_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_680_1349_Open_Text"><span style="COLOR: #000000">{
        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (v </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> length </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">) </span><span id="_710_788_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_710_788_Open_Text"><span style="COLOR: #000000">{
          path </span><span style="COLOR: #000000"> =</span><span style="COLOR: #000000"> names[v] </span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;
          </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> File(path).mkdir();
        }</span></span><span style="COLOR: #000000">
        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span id="_803_1341_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_803_1341_Open_Text"><span style="COLOR: #000000">{ </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 最后一个</span><span style="COLOR: #008000">
</span><span style="COLOR: #000000">          </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (entryName.endsWith(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)) </span><span id="_852_930_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_852_930_Open_Text"><span style="COLOR: #000000">{ </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 为目录,则创建文件夹</span><span style="COLOR: #008000">
</span><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> File(extPlace </span><span style="COLOR: #000000"> </span><span style="COLOR: #000000"> entryName).mkdir();
          }</span></span><span style="COLOR: #000000">
          </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span id="_947_1331_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_947_1331_Open_Text"><span style="COLOR: #000000">{
            InputStream in </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> zipFile.getInputStream(zipEntry);
            OutputStream os </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> FileOutputStream(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> File(extPlace </span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">
                entryName));
            </span><span style="COLOR: #0000ff">byte</span><span style="COLOR: #000000">[] buf </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">byte</span><span style="COLOR: #000000">[</span><span style="COLOR: #000000">1024</span><span style="COLOR: #000000">];
            </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> len;
            </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> ( (len </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> in.read(buf)) </span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) </span><span id="_1220_1271_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id="_1220_1271_Open_Text"><span style="COLOR: #000000">{
              os.write(buf, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, len);
            }</span></span><span style="COLOR: #000000">
            in.close();
            os.close();
          }</span></span><span style="COLOR: #000000">
        }</span></span><span style="COLOR: #000000">
      }</span></span><span style="COLOR: #000000">
    }</span></span><span style="COLOR: #000000">
    zipFile.close();
  }</span></span><span style="COLOR: #000000">
}</span></span><span style="COLOR: #000000">
</span>

您可能感兴趣的文章:
php利用ZipArchive类实现文件压缩与解压
PHP文件怎么解压和压缩?(代码示例)
php解压文件的方法 php解压zip文件的例子
PHP在线压缩zip的函数代码
php ZipArchive类使用实例详解
php压缩与解压缩类PclZip的例子
python如何压缩zip
php ZipArchive类创建和解压zip文件实例
php zip解压缩类pclzip用法举例
asp.net实现zip压缩与解压缩

[关闭]
~ ~