zoukankan      html  css  js  c++  java
  • 笔记:I/O流-ZIP文档

    ZIP文档以压缩格式存储了一个或多个文件,每个ZIP文档都有一个头,包含诸如每个文件名字和所使用的压缩方法等信息,在 Java 中可以使用 ZipInputStream 来读入ZIP 文档,getNextEntry 方法返回一个描述这些项的 ZipEntry 类型的对象,ZipInputStream read 方法被修改为在碰到当前项的结尾时返回 -1,然后必须调用 closeEntry 来读入下一个项,示例代码如下:

                    ZipInputStream inputStream = null;

                    try {

                            inputStream = new ZipInputStream(new FileInputStream("x64.zip"));

                            ZipEntry entry = null;

                            while ((entry = inputStream.getNextEntry()) != null) {

    // 将每个项的内容单独保存为文件

                                    saveFile(entry.getName(), inputStream);

                                    inputStream.closeEntry();

                            }

                    } catch (FileNotFoundException ex) {

                            ex.printStackTrace();

                    } finally {

                            if (inputStream != null) {

                                    inputStream.close();

                            }

                    }

    要写入到ZIP文件,可以使用ZipOutputStream类,对于希望放入到ZIP文件中的项,都应该创建一个ZipEntry对象,并将文件名称传递给ZipEntry构造函数,并设置默认的日期、解压缩参数等,然后调用 putNextEntry 方法增加项,并向流中写入内容,最后调用 closeEntry 来关闭项,示例代码如下:

               // 将多个文件增加到压缩文件中

                    ZipOutputStream outputStream = null;

                    String[] fileNames = new String[]{"PrintWriter.log", "filestream.dat",".idea\compiler.xml"};

                    try {

                            outputStream = new ZipOutputStream(new FileOutputStream("zipStreamApp.zip"));

                            for (String fileName : fileNames) {

                                    ZipEntry entry = new ZipEntry(fileName);

                                    outputStream.putNextEntry(entry);

                                    byte[] fileBytes = readFile(fileName);

                                    outputStream.write(fileBytes);

                                    outputStream.closeEntry();

                            }

                    }

                    finally {

                            if(outputStream != null){

                                    outputStream.close();

                            }

                    }

       

       

  • 相关阅读:
    spring mvc controller间跳转 重定向 传参
    SpringMVC拦截器(资源和权限管理)
    Spring3 MVC 拦截器拦截不到的问题
    使用HandlerInterceptor实现简单的授权
    同一个form里,不管哪个 submit 都是直接提交form表单里的内容
    AJax+springMVC+JQURY.GET--注册界面即时刷新用户名是否存在
    Ajax异步检查用户名是否存在(附Demo下载)
    Ajax注册表单用户名实时验证
    SpringMVC记住密码功能(实例)
    CocoaPods停在Analyzing dependencies解决方案
  • 原文地址:https://www.cnblogs.com/li3807/p/6804284.html
Copyright © 2011-2022 走看看