zoukankan      html  css  js  c++  java
  • Java创建Zip文件示例

    package zipfile;

    //java.util.zip包提供了数据压缩和解压缩的类
    import java.io.*;
    import java.util.zip.*;
    public class Zip{
     static final int BUFFER = 2048;
     static boolean flag = false;
     public static void main(String args[]) throws IOException{
      File file = new File(args[0]);
      FileInputStream file1 = new FileInputStream(ZipSubdirectory(file));
     }
     // ZipSubdirectory函数将一个指定目录(包括它子目录)压缩成一个同名压缩文件(这里称为"ORIGIN")
     public static File ZipSubdirectory(File myDir) throws IOException{
      // 创建缓冲输入流BufferedInputStream
      BufferedInputStream origin = null;
      // 创建ZipOutputStream对象,将向它传递希望写入文件的输出流
      File zipFile = new File(myDir.getName() + ".zip");
      FileOutputStream fos = new FileOutputStream(zipFile);
      ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(fos,
        BUFFER));
      // dirContents[]获取当前目录(myDir)所有文件对象(包括子目录名)
      File dirContents[] = myDir.listFiles();
      // 创建临时文件tempFile,使用后删除
      File tempFile = null;
      try{
       // 处理当前目录所有文件对象,包括子目录
       for(int i = 0;i < dirContents.length;i++){
        // 使用递归方法将当前目录的子目录转成一个ZIP文件,并作为一个ENTRY加进"ORIGIN"
        if(dirContents[i].isDirectory()){
         tempFile = ZipSubdirectory(dirContents[i]);
         flag = true;
        }
        // 如果当前文件不是子目录
        else{
         tempFile = dirContents[i];
         // flag标记tempFile是否由子目录压缩成的ZIP文件
         flag = false;
        }
        System.out.println("Compress file: " + tempFile.getName());
        FileInputStream fis = new FileInputStream(tempFile);
        origin = new BufferedInputStream(fis, BUFFER);
        // 为被读取的文件创建压缩条目
        ZipEntry entry = new ZipEntry(tempFile.getName());
        byte data[] = new byte[BUFFER];
        int count;
        // 在向ZIP输出流写入数据之前,必须首先使用out.putNextEntry(entry); 方法安置压缩条目对象
        out.putNextEntry(entry);
        // 向ZIP 文件写入数据
        while((count = origin.read(data, 0, BUFFER)) != -1){
         out.write(data, 0, count);
        }
        // 关闭输入流
        origin.close();
        // tempFile是临时生成的ZIP文件,删除它
        if(flag == true){
         flag = tempFile.delete();
         System.out.println("Delete file:" + tempFile.getName()+" "
           + flag);
        }
       }
      }catch(Exception e){
       System.out.println(e);
      }
      // 递归返回
      out.close();
      return zipFile;
     }
    }

  • 相关阅读:
    PAIP.paip.手机离线ROOT过程总结
    paip.程序设计扫号器跑号器结果分类设计
    PAIP.测试硬盘的成色以及速率
    paip.httpd.conf 是空的.txt
    paip.c#.nett 系统托盘动态图标闪烁图标
    paip.验证码识别反馈法提高识别率
    paip.提升用户体验找回密码的设
    paip.sql2008 客户端软件绿色版V319
    提升用户体验自动邮编提示与验证地址
    PAIP.提升性能---LISTBOX加载30万大数据量终结方案
  • 原文地址:https://www.cnblogs.com/CUCmehp/p/1320028.html
Copyright © 2011-2022 走看看