忘了转载谁的了,对原作者表身敬意!
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
在提供的代码片段中,`unzipFile`方法展示了如何解压缩一个`.zip`文件。它首先创建一个`ZipFile`对象,然后遍历其中的所有`ZipEntry`,如果是目录,则创建对应的目录结构;如果是文件,则通过`getInputStream`获取流...
在Java编程语言中,文件的压缩与解压缩是常见的数据处理操作,特别是在数据传输、存储优化和备份场景中。本实践项目围绕这个主题展开,包括源代码和相关的论文,为学习者提供了深入理解和应用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文件压缩与...
##### 2.4 `uncompress` 方法:解压缩文件 此方法用于解压缩 ZIP 文件,参数包括: - `inFile`:待解压缩的 ZIP 文件路径。 - `outDir`:解压后的文件存放目录。 - `key`:用于文件解密的密钥字符串。 - `ifSubDir`...
java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....
3. **解压缩文件**: `ZipInputStream`可以用来读取和解压缩ZIP文件。创建`ZipInputStream`,然后循环读取每个`ZipEntry`,创建对应的文件或目录,并将数据写入。 4. **RAR文件处理**: 对于RAR格式,Java标准库没有...
3. **解压缩文件** 解压ZIP文件则需要一个`ZipInputStream`实例,它包装在一个`FileInputStream`中,指向ZIP文件。通过调用`getNextEntry`方法,你可以逐个访问ZIP文件中的每个条目,然后创建相应的文件或目录,将...
5. **解压缩文件**: 解压ZIP文件的过程相对简单: - 使用`ZipFile`打开ZIP文件。 - 遍历`ZipFile`的所有条目(`ZipEntry`)。 - 对于每个条目,创建一个`FileOutputStream`,指定目标解压路径。 - 创建`...
Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩