Java中的Zip进行多文件的保存
来源:互联网 发布:java 没错溢出 编辑:程序博客网 时间:2024/06/05 00:31
package zipDemo;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.util.Enumeration;import java.util.zip.Adler32;import java.util.zip.CheckedInputStream;import java.util.zip.CheckedOutputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import java.util.zip.ZipInputStream;import java.util.zip.ZipOutputStream;/** * 用Java中的Zip进行多文件的保存练习 * @author 於之 * */public class Zip { public static void main(String[] args) throws Exception{ /** * 压缩多个文件(zip可以压缩任何文件,包括二进制文件) * 将多个文件压缩到同一个压缩文件中 */ args = new String[3]; args[0] = "d:/file/a.txt"; args[1] = "d:/file/b.txt"; args[2] = "d:/file/c.txt"; /** * 压缩文件存放的路径以及名称 */ FileOutputStream f = new FileOutputStream("d:/file/abc.zip"); /** * 作用是为任何OutputStream产生校验和 * 第一个参数是制定产生校验和的输出流,第二个参数是指定Checksum的类型 (Adler32(较快)和CRC32两种) */ CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32()); /** * 用于将数据压缩成Zip文件格式 */ ZipOutputStream zos = new ZipOutputStream(csum); BufferedOutputStream out = new BufferedOutputStream(zos); zos.setComment("A test of Java Zipping"); //添加注释 int i=1; for(String arg : args){//一次对需要压缩的文件依次操作 System.out.println("writing file: "+arg); BufferedReader in = new BufferedReader(new FileReader(arg)); /** * 对于每一个要被存放到压缩包的文件,都必须调用ZipOutputStream对象的putNextEntry()方法 * 参数是一个 ZipEntry(String arg)对象,arg表示文件的路径,可以直接使用被压缩文件的路径作为压缩包中 * 文件的路径,也可以自己重新定义每个文件在压缩包中的路径 * * ZipEntry只有CRC校验和类型 */ zos.putNextEntry(new ZipEntry("file/"+i+".txt")); //同一个压缩包中文件名不能一样 i++; int c; while((c=in.read())!=-1){ out.write(c); } in.close(); out.flush(); } out.close(); //压缩操作完成 //。。。。。。。。。。。。。。。。。。。。。。 System.out.println("CheckSum: "+csum.getChecksum().getValue()); /** * 解压压缩文件第一种方法 */ System.out.println("Reading file"); FileInputStream fi = new FileInputStream("d:/file/abc.zip"); CheckedInputStream csumi = new CheckedInputStream(fi, new Adler32()); ZipInputStream in2 = new ZipInputStream(csumi); BufferedInputStream bis = new BufferedInputStream(in2); /** * 从ZipInputStream中获取NextEntry对象 */ //ZipEntry ze=in2.getNextEntry(); 如果在循环外面获取NextEntry,那么只会执行一次,本例中ze永远等于file/1.txt ZipEntry ze; while((ze=in2.getNextEntry())!=null){ System.out.println("Reading file "+ze); int x; byte[] car=new byte[1024]; while((x=bis.read())!=-1){ System.out.write(x); //将文件读取的内容打印到控制台 } } if(args.length==1)System.out.println("Checksum: "+csumi.getChecksum().getValue()); bis.close(); /** * 解压文件的第二种方法 直接使用ZipFile对象 */ ZipFile zf = new ZipFile("d:/file/abc.zip"); Enumeration e = zf.entries(); while(e.hasMoreElements()){ ZipEntry ze2 = (ZipEntry) e.nextElement(); System.out.println("File:ZipEntry: "+ze2); } } }
阅读全文
0 0
- Java中的Zip进行多文件的保存
- Java用ZIP进行多文件保存
- Java中Zip进行多文件保存
- Java 使用Zip进行多文件保存和读取
- Java用ZIP进行多文件压缩保存
- 用 Zip 进行多文件保存
- 用ZIP进行多文件保存
- java压缩 GZIP进行简单压缩,ZIP进行多文件保存
- 多文件进行zip压缩
- Java解压密码的zip文件
- Java中的流与文件:ZIP文档
- java实现单个文件多个文件的zip压缩
- 使用Java zip包和apach 的ant包对文件、文件夹进行压缩,兼容中文
- 用zip压缩保存文件
- java 将多个文件打包成一个zip后进行下载
- java 实现多个文件打包成zip的功能
- java将文件夹中的多个文件(包含子文件夹)压缩成zip文件
- 之前的通讯录进行文件保存
- fk方柯
- 判断一个字符串是不是回文数
- 如何定位虚拟机内部附加的数据磁盘
- 《黑客与画家》读书笔记
- 资讯精选 | TechCrunch炉边对话吴恩达:不回应70hr招聘要求_看好小公司AI驱动
- Java中的Zip进行多文件的保存
- Media Queries
- 【20】五款常用配色
- nginx ssl 107 (net::ERR_SSL_PROTOCOL_ERROR) 无法与服务器建立安全连接 解决方法
- Swift
- servlet中的请求转发和重定向的路径问题
- 京东Android一面答错的知识
- 使用faster-rcnn训练自己的模型
- 接口测试用例小结