java压缩文件成zip,rar

Posted 江州益彤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java压缩文件成zip,rar相关的知识,希望对你有一定的参考价值。

package test3;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class Test3_2 {
	public static void main(String[] args) {
		zipMultiFile("E:/temp/a", "C:/Users/Administrator/Desktop/zipTest.rar", true);
	}

	/**
	 * 压缩整个文件夹中的所有文件,生成指定名称的zip压缩包
	 * 
	 * @param filepath 文件所在目录
	 * @param zippath  压缩后zip文件名称
	 * @param dirFlag  zip文件中第一层是否包含一级目录,true包含;false没有
	 */
	public static void zipMultiFile(String filepath, String zippath, boolean dirFlag) {
		try {
			File file = new File(filepath);// 要被压缩的文件夹
			File zipFile = new File(zippath);
			ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
			if (file.isDirectory()) {
				File[] files = file.listFiles();
				for (File fileSec : files) {
					if (dirFlag) {
						recursionZip(zipOut, fileSec, file.getName() + File.separator);
					} else {
						recursionZip(zipOut, fileSec, "");
					}
				}
			}
			zipOut.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static void recursionZip(ZipOutputStream zipOut, File file, String baseDir) throws Exception {
		if (file.isDirectory()) {
			File[] files = file.listFiles();
			for (File fileSec : files) {
				recursionZip(zipOut, fileSec, baseDir + file.getName() + File.separator);
			}
		} else {
			byte[] buf = new byte[1024];
			InputStream input = new FileInputStream(file);
			zipOut.putNextEntry(new ZipEntry(baseDir + file.getName()));
			int len;
			while ((len = input.read(buf)) != -1) {
				zipOut.write(buf, 0, len);
			}
			input.close();
		}
	}
}

以上是关于java压缩文件成zip,rar的主要内容,如果未能解决你的问题,请参考以下文章

java项目部署在linux服务器上。想用java程序实现把某些特定文件压缩成rar文件,该如何实现?

压缩文件zip与rar有啥区别?

Java 将文件,文件夹打入压缩包zip,rar

如何用7-Zip 把文件压缩成rar文件???

求一段VBS压缩RAR或ZIP代码

winxp下写bat 打成zip压缩包的代码怎么写