本文转载自 “http://blog.csdn.net/gaowen_han/article/details/7163737”
程序实现了ZIP压缩。共分为2部分 : 压缩(compression)与解压(decompression)
大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。 需在代码中自定义源输入路径和目标输出路径。
package com.han;
import java.io.*;
import java.util.zip.*;
/**
* 程序实现了ZIP压缩。共分为2部分 : 压缩(compression)与解压(decompression)
* <p>
* 大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。 需在代码中自定义源输入路径和目标输出路径。
* <p>
* 在本段代码中,实现的是压缩部分;解压部分见本包中Decompression部分。
*
* @author HAN
*
*/
public class MyZipCompressing {
private int k = 1; // 定义递归次数变量
public MyZipCompressing() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyZipCompressing book = new MyZipCompressing();
try {
book.zip("C:\\Users\\Gaowen\\Desktop\\ZipTestCompressing.zip",
new File("C:\\Users\\Gaowen\\Documents\\Tencent Files"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void zip(String zipFileName, File inputFile) throws Exception {
System.out.println("压缩中...");
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
zipFileName));
BufferedOutputStream bo = new BufferedOutputStream(out);
zip(out, inputFile, inputFile.getName(), bo);
bo.close();
out.close(); // 输出流关闭
System.out.println("压缩完成");
}
private void zip(ZipOutputStream out, File f, String base,
BufferedOutputStream bo) throws Exception { // 方法重载
if (f.isDirectory()) {
File[] fl = f.listFiles();
if (fl.length == 0) {
out.putNextEntry(new ZipEntry(base + "/")); // 创建zip压缩进入点base
System.out.println(base + "/");
}
for (int i = 0; i < fl.length; i++) {
zip(out, fl[i], base + "/" + fl[i].getName(), bo); // 递归遍历子文件夹
}
System.out.println("第" + k + "次递归");
k++;
} else {
out.putNextEntry(new ZipEntry(base)); // 创建zip压缩进入点base
System.out.println(base);
FileInputStream in = new FileInputStream(f);
BufferedInputStream bi = new BufferedInputStream(in);
int b;
while ((b = bi.read()) != -1) {
bo.write(b); // 将字节流写入当前zip目录
}
bi.close();
in.close(); // 输入流关闭
}
}
}
package com.han;
import java.io.*;
import java.util.zip.*;
/**
* 程序实现了ZIP压缩。共分为2部分 :
* 压缩(compression)与解压(decompression)
* <p>
* 大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。
* 需在代码中自定义源输入路径和目标输出路径。
* <p>
* 在本段代码中,实现的是解压部分;压缩部分见本包中compression部分。
* @author HAN
*
*/
public class CopyOfMyzipDecompressing {
public static void main(String[] args) {
// TODO Auto-generated method stub
long startTime=System.currentTimeMillis();
try {
ZipInputStream Zin=new ZipInputStream(new FileInputStream(
"C:\\Users\\HAN\\Desktop\\stock\\SpectreCompressed.zip"));//输入源zip路径
BufferedInputStream Bin=new BufferedInputStream(Zin);
String Parent="C:\\Users\\HAN\\Desktop"; //输出路径(文件夹目录)
File Fout=null;
ZipEntry entry;
try {
while((entry = Zin.getNextEntry())!=null && !entry.isDirectory()){
Fout=new File(Parent,entry.getName());
if(!Fout.exists()){
(new File(Fout.getParent())).mkdirs();
}
FileOutputStream out=new FileOutputStream(Fout);
BufferedOutputStream Bout=new BufferedOutputStream(out);
int b;
while((b=Bin.read())!=-1){
Bout.write(b);
}
Bout.close();
out.close();
System.out.println(Fout+"解压成功");
}
Bin.close();
Zin.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long endTime=System.currentTimeMillis();
System.out.println("耗费时间: "+(endTime-startTime)+" ms");
}
}
分享到:
相关推荐
NULL 博文链接:https://zhenyong.iteye.com/blog/1576148
Java实现的带密码压缩与解压zip文件源码,可将多个文件使用不同的密码压进同一个zip文件;可以解压带密码的zip文件(store压缩模式)
java 文件zip 压缩与解压 可以直接调用
Java带密码压缩zip与解压文件源码Java实用源码整理learns
java 操作Zip文件(压缩、解压、加密) zip4j-1.3.2.jar ant-1.10.6.jar
java实现的解压与压缩的类 其中有zip和rar类型的 还包括了所需的架包
java解压zip压缩文件,读取压缩文件中的内容并输出到输出文件中。
本文通过对数据压缩算法的简要介绍,然后以详细的示例演示了利用java.util.zip包实现数据的压缩与解压,并扩展到在网络传输方面如何应用java.util.zip包现数据压缩与解压
java 实现文件的压缩与解压,很不错的一个例子,很适合初学者学习
Java带密码压缩zip与解压文件源码源码整理
基于GUI用IO流中的ZipOutputStream ,ZipInputStream实现文件的解压与压缩, 如文件解压函数如下 private void unZip(String zipFileName, String outputDirectory)throws Exception { InputStream in=null; ...
java压缩解压ZIP
使用 Java 语言实现并封装的创建 ZIP 格式的压缩文件并解压到指定目录和解压 ZIP 文件到指定目录的工具类。
java版本的zip压缩和解压程序,命令行的,没有界面,支持文件夹压缩解压
JAVA实现目录及文件的zip压缩和解压
Java带密码压缩zip与 解压文件源码Java实用源码整理
Android端zip压缩与解压,目前暂时只做zip格式支持,基于Zip4j (http://www.lingala.net/zip4j/)进行扩展成工具类,支持对单个文件,多个文件以及文件夹进行压缩,对压缩文件解压到到指定目录,支持压缩解压使用密码...
java控制指定路径下的文件夹压缩成zip格式。 java将zip压缩包解压成为文件夹。直接使用io流进行操作,不需借助其他jar包
java xml jdom解析包 Zip压缩解压 数据库驱动
对zip文件进行解压缩工具类,以及jar包