java技术实现zip压缩文件、文件夹、目录、单个文件

java编程中zip压缩上传的文件很常见是一个很普遍的功能,主要是把一些零碎的文件归类打包下载下来。下面给大家分享几个压缩的方法:

首先要判断是目录还是文件,根据类型(文件/文件夹)执行不同的压缩方法

/**
* 判断是目录还是文件,根据类型(文件/文件夹)执行不同的压缩方法
*
* @param file
* @param out
* @param basedir
*/
private void compressByType(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);
}
}

方法一:压缩一个文件

/**
* 压缩一个文件
* 江风成
* @param file
* @param out
* @param basedir
*/
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);
}
}

方法二:压缩一个目录

/**
* 压缩一个目录
* 江风成
* @param dir
* @param out
* @param 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++) {
/* 递归 */
compressByType(files[i], out, basedir + dir.getName() + “/”);
}
}

13h56400z461010054b

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部