首页 > 编程语言 >java实现zip与unzip

java实现zip与unzip

时间:2023-05-16 12:31:47浏览次数:40  
标签:unzip java File zip BUFFER io import new



jdk提供了Zip相关的类方便的实现压缩和解压缩。使用方法很简单。下边分别是压缩和解压缩的简单事例
1,压缩的

import java.io.BufferedInputStream;  
import java.io.BufferedOutputStream;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileOutputStream;  
import java.util.zip.ZipEntry;  
import java.util.zip.ZipOutputStream;  
public class Zip {  
  static final int BUFFER = 2048;  
  public static void main(String argv[]) {  
    try {  
      BufferedInputStream origin = null;  
      FileOutputStream dest = new FileOutputStream("E:\\test\\myfiles.zip");  
      ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest));  
      byte data[] = new byte[BUFFER];  
      File f = new File("e:\\test\\a\\");  
      File files[] = f.listFiles();  
      for (int i = 0; i < files.length; i++) {  
        FileInputStream fi = new FileInputStream(files[i]);  
        origin = new BufferedInputStream(fi, BUFFER);  
        ZipEntry entry = new ZipEntry(files[i].getName());  
        out.putNextEntry(entry);  
        int count;  
        while ((count = origin.read(data, 0, BUFFER)) != -1) {  
          out.write(data, 0, count);  
        }  
        origin.close();  
      }  
      out.close();  
    } catch (Exception e) {  
      e.printStackTrace();  
    }  
  }  
}



2,解压缩的。


import java.io.BufferedInputStream;  
import java.io.BufferedOutputStream;  
import java.io.File;  
import java.io.FileOutputStream;  
import java.util.Enumeration;  
import java.util.zip.ZipEntry;  
import java.util.zip.ZipFile;  
public class UnZip {  
  static final int BUFFER = 2048;  
  public static void main(String argv[]) {  
    try {  
      String fileName = "E:\\test\\myfiles.zip";  
      String filePath = "E:\\test\\";  
      ZipFile zipFile = new ZipFile(fileName);  
      Enumeration emu = zipFile.entries();  
      int i = 0;  
      while (emu.hasMoreElements()) {  
        ZipEntry entry = (ZipEntry) emu.nextElement();  
        // 会把目录作为一个file读出一次,所以只建立目录就可以,之下的文件还会被迭代到。  
        if (entry.isDirectory()) {  
          new File(filePath + entry.getName()).mkdirs();  
          continue;  
        }  
        BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(entry));  
        File file = new File(filePath + entry.getName());  
        // 加入这个的原因是zipfile读取文件是随机读取的,这就造成可能先读取一个文件  
        // 而这个文件所在的目录还没有出现过,所以要建出目录来。  
        File parent = file.getParentFile();  
        if (parent != null && (!parent.exists())) {  
          parent.mkdirs();  
        }  
        FileOutputStream fos = new FileOutputStream(file);  
        BufferedOutputStream bos = new BufferedOutputStream(fos, BUFFER);  
        int count;  
        byte data[] = new byte[BUFFER];  
        while ((count = bis.read(data, 0, BUFFER)) != -1) {  
          bos.write(data, 0, count);  
        }  
        bos.flush();  
        bos.close();  
        bis.close();  
      }  
      zipFile.close();  
    } catch (Exception e) {  
      e.printStackTrace();  
    }  
  }  
}

标签:unzip,java,File,zip,BUFFER,io,import,new
From: https://blog.51cto.com/u_3871599/6283437

相关文章

  • 使用java mail(jmail)通过gmail的stmp发送邮件:SSL方式
    [url]http://stackoverflow.com/questions/1990454/using-javamail-to-connect-to-gmail-smtp-server-ignores-specified-port-and-tries[/url]Transporttransport=session.getTransport("smtps");transport.connect(smtp_host,smtp_por......
  • 【Java】定时器CronExpression参数规则
    参考:定时器CronExpression配置说明详解-心和梦的方向-博客园(cnblogs.com) 项目中经常要使用到定时器,其中CronExpression配置非常重要。现在就配置说明详细解说一下:CronExpression表达式是由6个必需字段(秒、分、时、日、月、周)和一个可选字段(年)通过空格组成。cronExpres......
  • java基础(02)
    02-Java基础语法1.注释​ 注释是对代码的解释和说明文字。Java中的注释分为三种:单行注释://这是单行注释文字多行注释:/*这是多行注释文字这是多行注释文字这是多行注释文字*/注意:多行注释不能嵌套使用。文档注释:/**这是多行注释文字这是多行注释文字......
  • Java 中 ArrayList 和 LinkedList 有什么区别
    在Java中,ArrayList和LinkedList是两种常见的集合类。它们都实现了List接口,提供了类似数组的功能,可以存储任意类型的对象。虽然它们都可以实现相同的功能,但是它们的底层实现方式有所不同,因此在性能和用途上也存在一些差异。ArrayListArrayList是一个基于数组实现的动态数组,它可......
  • Java中两个字符串进行大小比较
    一:大小比较:使用String.compareTo方法如果需要忽略大小写,使用compareToIgnoreCasecompareTo()的返回值是int,它是先比较对应字符的大小(ASCII码顺序)1、如果字符串相等返回值02、如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值)(负值表示前字符......
  • 汉字转换为拼音的JavaScript库的比较
    JSPinyin有提供了两个方法:<依赖mootools>1)一个是将汉字翻译为拼音,其中每一个字的首字母大写;1pinyin.getFullChars(this.value);2)一个是可以将每一个字的拼音的首字母提取出来,是大写的形式。1pinyin.getCamelChars(this.value);还可以设置是否判断多音字。只是功能比较简单,如......
  • Java生成缩略图之Thumbnailator
    Thumbnailator是一个为Java界面更流畅的缩略图生成库。从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量。同时还支持根据一个目录批量生成缩略图。 http://code.googl......
  • java获取目录下文件名称
    1.package2.import3.import4.import5.6./**7.*读取目录及子目录下指定文件名的路径,返回一个List8.*/9.10.publicclass11.privatestaticLoggerlogger=Logger.getLogger(FileViewer.class);12.13./**14.*@parampath15.......
  • 01-面试必会-JAVA基础篇
    1.Final有什么用?被final修饰的类不可以被继承被final修饰的方法不可以被重写被final修饰的变量不可以被改变,被final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变的2.什么是重载(Overload)和重写(Override)?重载:发生在同一个类中,方法名相......
  • Java初学者之数据类型
    今天下午看了点数据类型的东西,来这里总结一下。顺便锻炼一下自己的思维能力.首先数据类型的分类:1. 基本数据类型2.引用数据类型基本数据类型有八种:整数型:byte(1B)short(2B)int(4B)long(8B),小数型:float(4B),double(8B),布尔值:true,false(1bit),字符型:char(2B)引用数......