`
jiayj198609
  • 浏览: 146791 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

JAVA压缩文件或文件夹的代码

    博客分类:
  • Java
阅读更多
package com.cn;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.CRC32;
import java.util.zip.CheckedOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipCompressor { 
	
	static final int BUFFER = 8192;

	private File zipFile;

	public ZipCompressor(String pathName) { 
			zipFile = new File(pathName); 
	}

	public void compress(String srcPathName) { 
		File file = new File(srcPathName); 
		if (!file.exists()) 
			throw new RuntimeException(srcPathName + "不存在!"); 
		try { 
			FileOutputStream fileOutputStream = new FileOutputStream(zipFile); 
			CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, 
					new CRC32()); 
			ZipOutputStream out = new ZipOutputStream(cos); 
			String basedir = ""; 
			compress(file, out, basedir); 
			out.close(); 
		} catch (Exception e) { 
			throw new RuntimeException(e); 
		} 
	}

	private void compress(File file, ZipOutputStream out, String basedir) { 
		/* 判断是目录还是文件 */ 
		if (file.isDirectory()) { 
			System.out.println("压缩:" + basedir + file.getName()); 
			this.compressDirectory(file, out, basedir); 
		} else { 
			System.out.println("压缩:" + basedir + file.getName()); 
			this.compressFile(file, out, basedir); 
		} 
	}

	/** 压缩一个目录 */ 
	private void compressDirectory(File dir, ZipOutputStream out, String basedir) { 
		if (!dir.exists()) 
			return;

		File[] files = dir.listFiles(); 
		for (int i = 0; i < files.length; i++) { 
			/* 递归 */ 
			compress(files[i], out, basedir + dir.getName() + "/"); 
		} 
	}

	/** 压缩一个文件 */ 
	private void compressFile(File file, ZipOutputStream out, String basedir) { 
		if (!file.exists()) { 
			return; 
		} 
		try { 
			BufferedInputStream bis = new BufferedInputStream( 
					new FileInputStream(file)); 
			ZipEntry entry = new ZipEntry(basedir + file.getName()); 
			out.putNextEntry(entry); 
			int count; 
			byte data[] = new byte[BUFFER]; 
			while ((count = bis.read(data, 0, BUFFER)) != -1) { 
				out.write(data, 0, count); 
			} 
			bis.close(); 
		} catch (Exception e) { 
			throw new RuntimeException(e); 
		} 
	} 
	
	/**測試是否可以壓縮*/
	public static void main(String[] args) { 
		ZipCompressor zc = new ZipCompressor("E:\\szhzip.zip"); 
		zc.compress("E:\\test"); 
		System.out.println("OK....");
	}
} 


分享到:
评论
7 楼 wukele 2013-08-04  
中文文件名压缩后是乱码~
6 楼 cgs1999 2010-11-26  
中文文件名压缩后是乱码~
5 楼 kongzhizhen 2010-11-26  
貌似lZ的代码运行起来,压缩後的文件打不开!
4 楼 jiayj198609 2010-11-25  
我已经知道了;在发表文章的时候;如果文章中有javad等代码的地方;将其代码复制;然后在上边的编辑工具中;点击 这样就将选中的代码部分设置成有颜色;使其代码更加具有可视化;可以去试试!
3 楼 imacback 2010-11-25  
jiayj198609 写道
怎么样才可以把代码变得像在MyEclipse中编辑的一样呢!?有会的麻烦告诉我一声;谢谢了!


新手同问
2 楼 jiayj198609 2010-11-25  
怎么样才可以把代码变得像在MyEclipse中编辑的一样呢!?有会的麻烦告诉我一声;谢谢了!
1 楼 pker02 2010-11-25  
帮楼主编辑一下,也方便自己看
package com.cn; 

import java.io.BufferedInputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.util.zip.CRC32; 
import java.util.zip.CheckedOutputStream; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipOutputStream; 

public class ZipCompressor { 

static final int BUFFER = 8192; 

private File zipFile; 

public ZipCompressor(String pathName) { 
zipFile = new File(pathName); 
} 

public void compress(String srcPathName) { 
File file = new File(srcPathName); 
if (!file.exists()) 
throw new RuntimeException(srcPathName + "不存在!"); 
try { 
FileOutputStream fileOutputStream = new FileOutputStream(zipFile); 
CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, 
new CRC32()); 
ZipOutputStream out = new ZipOutputStream(cos); 
String basedir = ""; 
compress(file, out, basedir); 
out.close(); 
} catch (Exception e) { 
throw new RuntimeException(e); 
} 
} 

private void compress(File file, ZipOutputStream out, String basedir) { 
/* 判断是目录还是文件 */ 
if (file.isDirectory()) { 
System.out.println("压缩:" + basedir + file.getName()); 
this.compressDirectory(file, out, basedir); 
} else { 
System.out.println("压缩:" + basedir + file.getName()); 
this.compressFile(file, out, basedir); 
} 
} 

/** 压缩一个目录 */ 
private void compressDirectory(File dir, ZipOutputStream out, String basedir) { 
if (!dir.exists()) 
return; 

File[] files = dir.listFiles(); 
for (int i = 0; i < files.length; i++) { 
/* 递归 */ 
compress(files[i], out, basedir + dir.getName() + "/"); 
} 
} 

/** 压缩一个文件 */ 
private void compressFile(File file, ZipOutputStream out, String basedir) { 
if (!file.exists()) { 
return; 
} 
try { 
BufferedInputStream bis = new BufferedInputStream( 
new FileInputStream(file)); 
ZipEntry entry = new ZipEntry(basedir + file.getName()); 
out.putNextEntry(entry); 
int count; 
byte data[] = new byte[BUFFER]; 
while ((count = bis.read(data, 0, BUFFER)) != -1) { 
out.write(data, 0, count); 
} 
bis.close(); 
} catch (Exception e) { 
throw new RuntimeException(e); 
} 
} 

/**測試是否可以壓縮*/ 
public static void main(String[] args) { 
ZipCompressor zc = new ZipCompressor("E:\\szhzip.zip"); 
zc.compress("E:\\test"); 
System.out.println("OK...."); 
} 
} 

相关推荐

Global site tag (gtag.js) - Google Analytics