`

java压缩/解压缩文件

阅读更多
忘了转载谁的了,对原作者表身敬意!

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压缩/解压缩zip

    使用Java核心API实现单文件/多文件/整个目录的压缩/解压缩功能,由于自带API(1.6)不支持指定编码方式,因此中文会出现乱码(1.7貌似已经支持指定编码方式),所以还写了一个基于ant包的压缩/解压缩代码。

    Java压缩/解压缩文件或目录组件FileArchive(附可执行程序下载)

    NULL 博文链接:https://californium.iteye.com/blog/766187

    java 压缩/解压 .zip/.rar/.tar 文件

    在提供的代码片段中,`unzipFile`方法展示了如何解压缩一个`.zip`文件。它首先创建一个`ZipFile`对象,然后遍历其中的所有`ZipEntry`,如果是目录,则创建对应的目录结构;如果是文件,则通过`getInputStream`获取流...

    JAVA文件压缩与解压缩实践(源代码+论文)

    在Java编程语言中,文件的压缩与解压缩是常见的数据处理操作,特别是在数据传输、存储优化和备份场景中。本实践项目围绕这个主题展开,包括源代码和相关的论文,为学习者提供了深入理解和应用Java压缩库的机会。以下...

    (Java毕业设计)JAVA文件压缩与解压缩实践(源代码+).rar

    (Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业...

    JAVA文件压缩与解压缩实践(源代码).zip

    JAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩...

    JAVA文件压缩与解压缩实践(源代码+论文).rar

    JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件压缩与解压缩实践(源代码+论文) JAVA文件...

    JAVA文件压缩与解压缩实践(源代码+LW).zip

    JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践(源代码+LW)JAVA文件压缩与解压缩实践...

    JAVA文件压缩与解压缩实践(源代码+论文).zip

    JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与解压缩实践(源代码+论文)JAVA文件压缩与...

    java ZIP压缩/解压缩(同时加解密)解决方案(一)

    ##### 2.4 `uncompress` 方法:解压缩文件 此方法用于解压缩 ZIP 文件,参数包括: - `inFile`:待解压缩的 ZIP 文件路径。 - `outDir`:解压后的文件存放目录。 - `key`:用于文件解密的密钥字符串。 - `ifSubDir`...

    java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip

    java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....

    java压缩文件解压缩和文件的压缩

    3. **解压缩文件**: `ZipInputStream`可以用来读取和解压缩ZIP文件。创建`ZipInputStream`,然后循环读取每个`ZipEntry`,创建对应的文件或目录,并将数据写入。 4. **RAR文件处理**: 对于RAR格式,Java标准库没有...

    JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码.zip

    3. **解压缩文件** 解压ZIP文件则需要一个`ZipInputStream`实例,它包装在一个`FileInputStream`中,指向ZIP文件。通过调用`getNextEntry`方法,你可以逐个访问ZIP文件中的每个条目,然后创建相应的文件或目录,将...

    Java zip 压缩/解压源码

    5. **解压缩文件**: 解压ZIP文件的过程相对简单: - 使用`ZipFile`打开ZIP文件。 - 遍历`ZipFile`的所有条目(`ZipEntry`)。 - 对于每个条目,创建一个`FileOutputStream`,指定目标解压路径。 - 创建`...

    Java实现压缩解压缩文件和文件夹(附源码)

    Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩

Global site tag (gtag.js) - Google Analytics