• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

java压缩指定目录下的所有文件和文件夹

JAVA相关 水墨上仙 2761次浏览

java压缩指定目录下的所有文件和文件夹

import java.io.*;
import java.util.*;
import java.util.zip.*;
String sourceDir="E:\\test";
int parentDirectoryLen=sourceDir.lastIndexOf(File.separator)+1;
File[] copyfoldersList = new File(sourceDir).listFiles();
FileOutputStream fos = new FileOutputStream("E:\\test.zip");
ZipOutputStream zipOut = new ZipOutputStream(fos);
for (int k = 0; k < copyfoldersList.length; k++) {
	if (copyfoldersList[k].isDirectory()) {
		LinkedList<String> copysourcepath = new LinkedList<String>(Arrays.asList(copyfoldersList[k].getAbsolutePath()));
		while (copysourcepath.size() > 0) {
			File folders = new File(copysourcepath.peek());
			String[] file = folders.list();
			for (int i = 0; i < file.length; i++) {
				File ff = new File(copysourcepath.peek(), file[i]);
				if (ff.isFile()) {
					FileInputStream fis =null;
					try {
						fis = new FileInputStream(ff);
						ZipEntry entry = new ZipEntry(ff.getAbsoluteFile().substring(parentDirectoryLen));
						zipOut.putNextEntry(entry);
						int nNumber;
						byte[] buffer = new byte[Long.MIN_VALUE];
						while ((nNumber = fis.read(buffer)) != -1)
							zipOut.write(buffer, 0, nNumber);
					} catch (IOException e) {
						e.printStackTrace();
						zipOut.close();
						fos.close();
					}finally{
						try {
							fis.close();
						} catch (IOException e) {}
					}
				} else if (ff.isDirectory()) {
					for (File f : temp.listFiles()) {
						if (f.isDirectory())
							copysourcepath.add(f.getPath());
						else if (f.isFile()) {
							FileInputStream fis =null;
							try {
								fis = new FileInputStream(f);
								ZipEntry entry = new ZipEntry(f.getAbsoluteFile().substring(parentDirectoryLen));
								zipOut.putNextEntry(entry);
								int nNumber;
								byte[] buffer = new byte[Long.MIN_VALUE];
								while ((nNumber = fis.read(buffer)) != -1)
									zipOut.write(buffer, 0, nNumber);
							} catch (IOException e) {
								e.printStackTrace();
								zipOut.close();
								fos.close();
							}finally{
								try {
									fis.close();
								} catch (IOException e) {}
							}
						}
					}
				}
			}
			copysourcepath.removeFirst();
		}
	}
}
try {
	zipOut.flush();
} catch (IOException e) {
	e.printStackTrace();
}finally{
	try {
		zipOut.close();
		fos.close();
	} catch (IOException e) {}
}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明java压缩指定目录下的所有文件和文件夹
喜欢 (0)
加载中……