欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA Zip压缩文件

程序员文章站 2022-07-12 12:36:19
...

   从中午开始学习压缩流的使用一直到现在才搞定压缩,最后发现居然是两个反斜杠错了  感觉都不会爱了,,,哈哈

 

java.util.zip包中提供了一系列的类可以来实现zip的压缩,

 

Zip压缩流的创建与其他的流的创建没有什么区别;例如

ZipOutputStream ops = new ZipOutputStream(new FileOutputStream("D:\\test.zip"));

 

ZIP输入流打开后,你可以使用getNextEntry方法来读取ZIP文件中的条目数,该方法返回一个ZipEntry对象。如果到达文件的尾部,getNextEntry返回null:

ZipEntry entry;
while((entry = zin.getNextEntry()) != null) {
   // extract data
   // open output streams
}

 

实现单文件的压缩;

代码如下;

首先在D盘中创建要压缩的文件夹

package ZIP文件流;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectOutputStream.PutField;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * Zip格式的文件压缩
 * @author Administrator
 *
 */
public class Copy2Test {

	public static void main(String[] args) {
		//单文件压缩
	Copy2Txt();

		
	}
	
	/**
	 * 压缩单文件的方法
	 * 1,定义文件压缩输出流
	 * 2,实例化一个文件压缩的对象
	 * 3,创建文件输入流
	 * 4,将输入流写到文件压缩流中
	 * @throws FileNotFoundException 
	 */
	public static void Copy2Txt() {
		try{
			//1,创建文件输出时的文件
		ZipOutputStream ops = new ZipOutputStream(new FileOutputStream("D:\\test.zip"));
		//2,创建输出文件中的对象
		ZipEntry entry = new ZipEntry("ab.txt");
		//创建一个文档注释
		ops.setComment("Here is how we compressed in Java");
		//将对象放到压缩文档中
		ops.putNextEntry(entry);
		 //3,创建文件输入流
		InputStream fis = new FileInputStream("D:\\ab.txt");
//		int len = 0;
//		while ((len = fis.read()) != -1)
//			ops.write(len);
		int len = fis.read();
		while(len !=-1){
			ops.write(len);
			len = fis.read();
			}
		fis.close();
		ops.close();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}

 源文件与压缩后的文件
JAVA  Zip压缩文件
            
    
    博客分类: JAVA 基础 文件压缩压缩流的使用Zip格式 
 

源文件中的内容
JAVA  Zip压缩文件
            
    
    博客分类: JAVA 基础 文件压缩压缩流的使用Zip格式 
 压缩文件中的内容
JAVA  Zip压缩文件
            
    
    博客分类: JAVA 基础 文件压缩压缩流的使用Zip格式 
 

 

压缩多个文件的代码如下;

 

package ZIP文件流;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectOutputStream.PutField;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * Zip格式的文件压缩
 * @author Administrator
 *
 */
public class Copy2Test {

	public static void main(String[] args) {
		//多文件压缩
		Copy2Demo();
		System.out.println("//////");
		
	}
	

	
	/***
	 *多文件压缩
	 */
	public static void Copy2Demo() {
		try {
			File file = new File("F:\\test");
			//1,创建文件输出时的文件
			ZipOutputStream zop = new ZipOutputStream(new FileOutputStream("F:\\test.zip"));
		    zop.setComment("多文本压缩");
		    isFile(zop,file,"");
		    zop.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 判断文件还是文件目录
	 * @param zop 输出流
	 * @param file 文件
	 * @param dir 目录名字
	 * @throws IOException 
	 */
	private static void isFile(ZipOutputStream zop,File file,String dir) throws IOException{
		//如果是目录
		
		if(file.isDirectory()){
			//将文件保存到文件数组中
			File[] fil = file.listFiles();
			//遍历出来
			for(File files: fil ){
				
				isFile(zop,files,dir+"\\"+file.getName());
			}
		}else{
			String entryName = null;
			//判断文件名是否为空
			if(!"".equals(dir)){
			  entryName = dir+"\\"+file.getName();
			}
			else{
				entryName = file.getName();
			}
				//根据获取到的名字创建文件对象
				ZipEntry entrys = new ZipEntry(entryName);
				zop.putNextEntry(entrys);
				//创建文件输入流
				InputStream fim = new FileInputStream(file);
				int lens =fim.read();
				while(lens!=-1){
					zop.write(lens);
				    lens = fim.read();
				}
				fim.close();
			
		}
	}
	
}

 源文件与压缩文件
JAVA  Zip压缩文件
            
    
    博客分类: JAVA 基础 文件压缩压缩流的使用Zip格式 
 

压缩文件中被压缩的文件
JAVA  Zip压缩文件
            
    
    博客分类: JAVA 基础 文件压缩压缩流的使用Zip格式 
 压缩文件中Testfile中的文件


JAVA  Zip压缩文件
            
    
    博客分类: JAVA 基础 文件压缩压缩流的使用Zip格式 
 

 

  • JAVA  Zip压缩文件
            
    
    博客分类: JAVA 基础 文件压缩压缩流的使用Zip格式 
  • 大小: 5.7 KB
  • JAVA  Zip压缩文件
            
    
    博客分类: JAVA 基础 文件压缩压缩流的使用Zip格式 
  • 大小: 40.2 KB
  • JAVA  Zip压缩文件
            
    
    博客分类: JAVA 基础 文件压缩压缩流的使用Zip格式 
  • 大小: 89.6 KB
  • JAVA  Zip压缩文件
            
    
    博客分类: JAVA 基础 文件压缩压缩流的使用Zip格式 
  • 大小: 50.6 KB
  • JAVA  Zip压缩文件
            
    
    博客分类: JAVA 基础 文件压缩压缩流的使用Zip格式 
  • 大小: 78.8 KB
  • JAVA  Zip压缩文件
            
    
    博客分类: JAVA 基础 文件压缩压缩流的使用Zip格式 
  • 大小: 49.4 KB