`

(四) ZIP文档

 
阅读更多

ZIP文档(通常)以压缩格式存储了一个或多个文件,每个ZIP文档都有一个包含诸如文件名字和使用的压缩方法等信息的头。
(1)使用ZIPInputStream来读入ZIP,通过getNextEntry方法返回一个描述这些项的ZipEntry类型的对象。
ZIPInputStream的read方法被修改为在碰到当前项的结尾时返回 -1 ,必须通过调用closeEntry来读下一项。
e.g.通读ZIP文件的代码序列 ZipInputStream zin = new ZipInputStream(new FileInputStream(zipFile));

    ZipEntry entry = null; 
    while((entry=zin.getNextEntry()) != null){ 
        ... ... 
        zin.closeEntry(); 
    } 
    zin.close();  

 

(2)可以不使用原生的read方法,通常会使用某个更能胜任的流过滤器的方法。
e.g.读ZIP文件内部的一个文本文件

    ZipInputStream zin = new ZipInputStream(new FileInputStream(zipFile)); 
    ZipEntry entry = null; 
    Scanner in = null; 
    while((entry=zin.getNextEntry()) != null){ 
        in = new Scanner(zin); 
        while(in.hasNextLine()){ 
            System.out.println(in.nextLine()); 
        } 
        zin.closeEntry(); 
    } 
    in.close();  
 

注意:如果压缩文件被损坏会抛出ZipException
(3)写出到ZIP文件,可以使用ZipOutputStream
对于ZIP中每一项都应创建一个ZipEntry对象,并将文件名传递给ZipEntry的构造器,它将设置文件日期和解压方法等参数。如果需要也可以覆盖这些设置。
然后调用ZipOutputStream的putNextEntry方法来开始写新文件,并将文件数据发送到ZIP流中。完成后调用closeEntry。

    private static void testZIP() {   
        try{   
            File fromFile1 = new File(System.getProperty("user.dir")+"\\Notes\\流\\zip\\1.txt");   
            File fromFile2 = new File(System.getProperty("user.dir")+"\\Notes\\流\\zip\\2.txt");   
               
            DataInputStream in1 = new DataInputStream(new BufferedInputStream(new FileInputStream(fromFile1)));   
            DataInputStream in2 = new DataInputStream(new FileInputStream(fromFile2));   
               
            File toFile = new File(System.getProperty("user.dir")+"\\Notes\\流\\zip\\result.zip");   
            ZipOutputStream zipOut = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(toFile)));   
               
            ZipEntry ze = new ZipEntry(fromFile1.getName());   
            zipOut.putNextEntry(ze);   
            int bytes = -1;   
            while((bytes=in1.read())!=-1){   
                zipOut.write(bytes);   
            }   
            in1.close();   
            zipOut.closeEntry();   
               
            ze = new ZipEntry(fromFile2.getName());   
            zipOut.putNextEntry(ze);   
            while((bytes=in2.read())!=-1){   
                zipOut.write(bytes);   
            }   
            in2.close();   
            zipOut.closeEntry();   
            zipOut.close();   
        }catch(Exception e){   
            e.printStackTrace();   
        }   
    }    
 

 

分享到:
评论

相关推荐

    页面-模板文档.zip

    页面模板文档.zip页面模板文档.zip页面模板文档.zip页面模板文档.zip页面模板文档.zip页面模板文档.zip页面模板文档.zip页面模板文档.zip页面模板文档.zip页面模板文档.zip页面模板文档.zip页面模板文档.zip页面模板...

    7-Zip中文帮助文档

    7-Zip 适用于 Windows 95/98/ME/NT/2000/2003/XP。 7-Zip 是一款发布于 GNU LGPL 协议下的免费软件(除 unRar 代码及 AES 代码) 您可以查看 License.txt 文档了解详细的版权信息。

    C# Ionic.Zip.dll以及 解压压缩帮助文档

    本文将深入探讨使用`Ionic.Zip.dll`库在C#中进行文件压缩和解压缩的方法,并提供相关的帮助文档。 `Ionic.Zip.dll`是一个强大的开源库,由DotNetZip项目提供,它允许C#开发者方便地进行ZIP、GZip、BZip2等格式的...

    笔试面试算法题文档.zip

    笔试面试算法题文档.zip 笔试面试算法题文档.zip 笔试面试算法题文档.zip 笔试面试算法题文档.zip 笔试面试算法题文档.zip 笔试面试算法题文档.zip 笔试面试算法题文档.zip 笔试面试算法题文档.zip 笔试面试算法题...

    J2ME飞机游戏含文档.zip

    J2ME飞机游戏含文档.zip J2ME飞机游戏含文档.zip J2ME飞机游戏含文档.zip J2ME飞机游戏含文档.zip J2ME飞机游戏含文档.zip J2ME飞机游戏含文档.zip J2ME飞机游戏含文档.zip J2ME飞机游戏含文档.zip J2ME飞机游戏含...

    TFT1.8寸液晶资料.zip文档arduino元器件资料下载

    TFT1.8寸液晶资料.zip文档arduino元器件资料下载TFT1.8寸液晶资料.zip文档arduino元器件资料下载TFT1.8寸液晶资料.zip文档arduino元器件资料下载TFT1.8寸液晶资料.zip文档arduino元器件资料下载 1.合个人学习技术做...

    红外遥控器和接收管.zip文档arduino元器件资料下载

    红外遥控器和接收管.zip文档arduino元器件资料下载红外遥控器和接收管.zip文档arduino元器件资料下载红外遥控器和接收管.zip文档arduino元器件资料下载红外遥控器和接收管.zip文档arduino元器件资料下载 1.合个人...

    MSDN帮助文档中文.zip

    这个“MSDN帮助文档中文.zip”压缩包文件显然是一个中文版本的MSDN离线文档集合,适合那些在无网络环境或需要快速查阅技术资料的开发者使用,特别是对计算机知识不太熟悉的初学者。 该压缩包可能包含了一系列的HTML...

    poi-5.2.0-API文档-中文版.zip

    包含翻译后的API文档:poi-5.2.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.poi:poi:5.2.0; 标签:apache、poi、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index....

    guava-18.0-API文档-中文版.zip

    包含翻译后的API文档:guava-18.0-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:com.google.guava,artifactId:guava,version:18.0 使用方法:解压翻译后的API文档,用浏览器打开“index.html”...

    poi-4.1.2-API文档-中文版.zip

    包含翻译后的API文档:poi-4.1.2-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.poi:poi:4.1.2; 标签:apache、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”...

    PCF8591驱动程序及IIC工作原理分析.zip文档arduino元器件资料下载

    PCF8591驱动程序及IIC工作原理分析.zip文档arduino元器件资料下载PCF8591驱动程序及IIC工作原理分析.zip文档arduino元器件资料下载PCF8591驱动程序及IIC工作原理分析.zip文档arduino元器件资料下载PCF8591驱动程序及...

    软件开发需求分析文档.zip程序开发文档软件开发文技术档下载

    软件开发需求分析文档.zip程序开发文档软件开发文技术档下载软件开发需求分析文档.zip程序开发文档软件开发文技术档下载软件开发需求分析文档.zip程序开发文档软件开发文技术档下载软件开发需求分析文档.zip程序开发...

    jedis-2.9.0-API文档-中文版.zip

    包含翻译后的API文档:jedis-2.9.0-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:redis.clients,artifactId:jedis,version:2.9.0 使用方法:解压翻译后的API文档,用浏览器打开“index.html”...

    数码管.zip文档arduino元器件资料下载

    数码管.zip文档arduino元器件资料下载数码管.zip文档arduino元器件资料下载数码管.zip文档arduino元器件资料下载数码管.zip文档arduino元器件资料下载 1.合个人学习技术做项目参考合个人学习技术做项目参考 2.适合...

    C# 仓库管理系统含文档.zip

    C# 仓库管理系统含文档.zip C# 仓库管理系统含文档.zip C# 仓库管理系统含文档.zip C# 仓库管理系统含文档.zip C# 仓库管理系统含文档.zip C# 仓库管理系统含文档.zip C# 仓库管理系统含文档.zip C# 仓库管理系统含...

    JSP网上购物源码含文档.zip

    JSP网上购物源码含文档.zip JSP网上购物源码含文档.zip JSP网上购物源码含文档.zip JSP网上购物源码含文档.zip JSP网上购物源码含文档.zip JSP网上购物源码含文档.zip JSP网上购物源码含文档.zip JSP网上购物源码含...

    舵机.zip文档arduino元器件资料下载

    舵机.zip文档arduino元器件资料下载舵机.zip文档arduino元器件资料下载舵机.zip文档arduino元器件资料下载舵机.zip文档arduino元器件资料下载 1.合个人学习技术做项目参考合个人学习技术做项目参考 2.适合学生做毕业...

    jsoup-1.14.3-API文档-中文版.zip

    包含翻译后的API文档:jsoup-1.14.3-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.jsoup:jsoup:1.14.3; 标签:jsoup、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”...

Global site tag (gtag.js) - Google Analytics