Java实现zip文件压缩(单个文件、文件夹以及文件和文件夹的组合压缩)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java实现zip文件压缩(单个文件、文件夹以及文件和文件夹的组合压缩),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2839字,纯文字阅读大概需要5分钟。
内容图文
Java实现zip文件压缩(单个文件、文件夹以及文件和文件夹的组合压缩)
2016年10月04日 23:22:24 ljheee 阅读数:13215 标签: 压缩javazip 更多
个人分类: Java应用
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ljheee/article/details/52736035
Java实现zip文件压缩(单个文件、文件夹以及文件和文件夹的组合压缩)
-
package com.ljheee.ziptool.core;
-
import java.io.File;
-
import java.io.FileInputStream;
-
import java.io.FileOutputStream;
-
import java.io.IOException;
-
import java.util.zip.ZipEntry;
-
import java.util.zip.ZipOutputStream;
-
/**
-
* 压缩算法类
-
* 实现文件压缩,文件夹压缩,以及文件和文件夹的混合压缩
-
* @author ljheee
-
*
-
*/
-
public class CompactAlgorithm {
-
/**
-
* 完成的结果文件--输出的压缩文件
-
*/
-
File targetFile;
-
public CompactAlgorithm() {}
-
public CompactAlgorithm(File target) {
-
targetFile = target;
-
if (targetFile.exists())
-
targetFile.delete();
-
}
-
/**
-
* 压缩文件
-
*
-
* @param srcfile
-
*/
-
public void zipFiles(File srcfile) {
-
ZipOutputStream out = null;
-
try {
-
out = new ZipOutputStream(new FileOutputStream(targetFile));
-
if(srcfile.isFile()){
-
zipFile(srcfile, out, "");
-
} else{
-
File[] list = srcfile.listFiles();
-
for (int i = 0; i < list.length; i++) {
-
compress(list[i], out, "");
-
}
-
}
-
System.out.println("压缩完毕");
-
} catch (Exception e) {
-
e.printStackTrace();
-
} finally {
-
try {
-
if (out != null)
-
out.close();
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
/**
-
* 压缩文件夹里的文件
-
* 起初不知道是文件还是文件夹--- 统一调用该方法
-
* @param file
-
* @param out
-
* @param basedir
-
*/
-
private void compress(File file, ZipOutputStream out, String basedir) {
-
/* 判断是目录还是文件 */
-
if (file.isDirectory()) {
-
this.zipDirectory(file, out, basedir);
-
} else {
-
this.zipFile(file, out, basedir);
-
}
-
}
-
/**
-
* 压缩单个文件
-
*
-
* @param srcfile
-
*/
-
public void zipFile(File srcfile, ZipOutputStream out, String basedir) {
-
if (!srcfile.exists())
-
return;
-
byte[] buf = new byte[1024];
-
FileInputStream in = null;
-
try {
-
int len;
-
in = new FileInputStream(srcfile);
-
out.putNextEntry(new ZipEntry(basedir + srcfile.getName()));
-
while ((len = in.read(buf)) > 0) {
-
out.write(buf, 0, len);
-
}
-
} catch (Exception e) {
-
e.printStackTrace();
-
} finally {
-
try {
-
if (out != null)
-
out.closeEntry();
-
if (in != null)
-
in.close();
-
} catch (IOException e) {
-
e.printStackTrace();
-
}
-
}
-
}
-
/**
-
* 压缩文件夹
-
* @param dir
-
* @param out
-
* @param basedir
-
*/
-
public void zipDirectory(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() + "/");
-
}
-
}
-
//测试
-
public static void main(String[] args) {
-
File f = new File("E:/Study/Java");
-
new CompactAlgorithm(new File( "D:/test",f.getName()+".zip")).zipFiles(f);
-
}
-
}
完整工程实现界面化,通过界面完成对文件的压缩和解压,如下图:
Java实现zip文件解压[到指定目录]:http://blog.csdn.net/ljheee/article/details/52736091
完整工程:https://github.com/ljheee/MyZip1.0
内容总结
以上是互联网集市为您收集整理的Java实现zip文件压缩(单个文件、文件夹以及文件和文件夹的组合压缩)全部内容,希望文章能够帮你解决Java实现zip文件压缩(单个文件、文件夹以及文件和文件夹的组合压缩)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。