忘了转载谁的了,对原作者表身敬意!
org.apache.tools.zip.ZipEntry以及org.apache.tools.zip.ZipOutputStream
/**
* 压缩文件
*
* @param file
* @param out
* @param base
* @throws IOException
*/
public static synchronized void myzip(File file, ZipOutputStream out, String base) throws IOException {
if (file.isDirectory()) {
out.putNextEntry(new ZipEntry(base + "/"));
File[] files = file.listFiles();
for (File f : files) {
myzip(f, out, base + "/" + f.getName());//递归
}
} else {
if (StringUtils.isBlank(base)) {
base = file.getName();
}
out.putNextEntry(new ZipEntry(base));
int length;
byte[] buff = new byte[1024];
FileInputStream in = null;
try {
in = new FileInputStream(file);
while ((length = in.read(buff)) != -1) {
out.write(buff, 0, length);//生成压缩file
}
} finally {
in.close();
}
}
}
/**
* 解压缩文件
*
* @param zipFilename
* @param outputDirectory
* @throws IOException
*/
public synchronized void unzip(String zipFilename, String outputDirectory) throws IOException {
File outFile = new File(outputDirectory);
if (!outFile.exists()) {
outFile.mkdirs();
}
ZipFile zipFile = new ZipFile(zipFilename);
Enumeration en = zipFile.getEntries();
ZipEntry zipEntry = null;
while (en.hasMoreElements()) {
zipEntry = (ZipEntry) en.nextElement();
File f = new File(outFile.getPath() + File.separator + zipEntry.getName());
if (zipEntry.isDirectory()) {
f.mkdirs();//创建路径
} else {
if (!f.getParentFile().exists()) {
f.getParentFile().mkdirs();
}
//if (!f.exists()) {
// f.createNewFile();
//}
InputStream in = zipFile.getInputStream(zipEntry);
FileOutputStream out = new FileOutputStream(f);//创建文件
try {
int length;
byte[] buff = new byte[BUFFEREDSIZE];
while ((length = in.read(buff)) != -1) {
out.write(buff, 0, length);//读取流
}
// out.flush();
} catch (IOException e) {
throw e;
} finally {
out.close();
in.close();
}
}
}
}
//网页下载
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename="+URLEncoder.encode(s, "utf-8"));
response.getOutputStream();
分享到:
相关推荐
使用Java核心API实现单文件/多文件/整个目录的压缩/解压缩功能,由于自带API(1.6)不支持指定编码方式,因此中文会出现乱码(1.7貌似已经支持指定编码方式),所以还写了一个基于ant包的压缩/解压缩代码。
NULL 博文链接:https://californium.iteye.com/blog/766187
java 压缩/解压 .zip/.rar/.tar 文件,大家一起讨论,学习 已实现zip压缩/解压,rar解压
JAVA文件压缩与解压缩实践(源代码+论文)
(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业...
JAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩...
JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件...
JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践...
JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与...
JAVA文件压缩与解压缩实践报告 主函数 gzip压缩模块代码 压缩模块要完成的就是将文件读入以后进行压缩,再将压缩后的数据写入一个新的文件,其部分代码如下: public class gzip { public static void main(String...
java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....
JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码
java 解压缩zip文件 java 解压缩zip文件 java 解压缩zip文件
Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩
JAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA文件压缩与解压缩实践(源代码+lw).rarJAVA...
javaweb毕业设计-JAVA文件压缩与解压缩实践(源代码+lw)(可做课程设计).rarjavaweb毕业设计-JAVA文件压缩与解压缩实践(源代码+lw)(可做课程设计).rarjavaweb毕业设计-JAVA文件压缩与解压缩实践(源代码+lw)(可做课程...
Java文件压缩与解压缩是指将一个或多个文件或文件夹打包成一个压缩文件,或者将压缩文件解压缩成原始文件的过程。 常见的压缩格式包括ZIP、GZIP、TAR等,Java提供了相应的API来实现对这些格式的操作。 功能特点: ...