import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipInputStream;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
/**
* 文件解压缩,需要依赖ant.jar
*
*/
public class Zip{
private ZipInputStream zipIn; //解压Zip
private ZipOutputStream zipOut; //压缩Zip
private java.util.zip.ZipEntry zipEntry;
private int bufSize; //size of bytes
private byte[] buf;
private int readedBytes;
/**
* 默认buf:1024
*/
public Zip(){
this(1024);
}
/**
* 带缓冲大小参数的构造方法
* @param bufSize
*/
public Zip(int bufSize){
this.bufSize = bufSize;
this.buf = new byte[this.bufSize];
}
/**
* 压缩文件或文件夹
* @param zipDirectory 文件或文件夹的路径
* @param zipFileName 压缩后的文件名,如果为null,
则文件是文件的名称+.zip;文件夹是文件夹的名+.zip
*/
public void doZip(String zipDirectory,String zipFileName){
//zipDirectoryPath:需要压缩的文件夹名
File zipDir = new File(zipDirectory);
if(zipFileName==null)
zipFileName = zipDir.getName() + ".zip";
if(zipFileName.indexOf(".zip")==-1)
zipFileName+=".zip";
String zipPath="";
try{
if(zipDir.getParentFile()!=null){
zipPath=zipDir.getParentFile().getCanonicalPath()+File.separator;
}
File zipOutFile=new File(zipPath+zipFileName);
zipOut = new ZipOutputStream(new BufferedOutputStream(new
FileOutputStream(zipOutFile)));
zipOut.setEncoding("gbk");
handleDir(zipDir , zipOut,zipPath);
zipOut.close();
}catch(IOException ioe){
ioe.printStackTrace();
}
}
private void handleDir(File dir , ZipOutputStream zipOut,String basePath)
throws IOException{
FileInputStream fileIn;
if(dir.isDirectory()){
File[] files;
files = dir.listFiles();
if(files.length == 0){//如果目录为空,则单独创建之.
//ZipEntry的isDirectory()方法中,目录以"/"结尾.
zipOut.putNextEntry(new ZipEntry(dir.getCanonicalPath().
substring(basePath.length()) + "/"));
zipOut.closeEntry();
}else{//如果目录不为空,则分别处理目录和文件.
for(File fileName : files){
handleDir(fileName,zipOut,basePath);
}
}
}else{
fileIn = new FileInputStream(dir);
zipOut.putNextEntry(new ZipEntry(dir.getCanonicalPath().
substring(basePath.length())));
while((readedBytes = fileIn.read(buf))>0){
zipOut.write(buf , 0 , readedBytes);
}
fileIn.close();
zipOut.closeEntry();
}
}
/**
* 解压zip包
* @param unZipfileName 需要解压的zip文件路径名
*/
public void unZip(String unZipfileName){
FileOutputStream fileOut;
File file;
try {
String basePath=new File(unZipfileName).getParentFile().getCanonicalPath();
zipIn = new ZipInputStream(new BufferedInputStream(
new FileInputStream(unZipfileName)));
while ((zipEntry =zipIn.getNextEntry()) != null) {
file = new File(basePath+File.separator+zipEntry.getName());
if (zipEntry.isDirectory()) {
file.mkdirs();
} else {
File parent = file.getParentFile();
if (!parent.exists()) {
parent.mkdirs();
}
fileOut = new FileOutputStream(file);
while ((readedBytes = zipIn.read(buf)) > 0) {
fileOut.write(buf, 0, readedBytes);
}
fileOut.close();
}
zipIn.closeEntry();
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
/**
* 设置缓冲大小
* @param bufSize
*/
public void setBufSize(int bufSize){
this.bufSize = bufSize;
}
public static void main(String[] args)throws Exception{
Zip zip = new Zip();
String file1 = "C:\\ggg";
zip.doZip(file1,null);
}
}
分享到:
相关推荐
java实现文件解压缩,ZipInputStream,ZipOutputStream
解压缩在我们日常生活中经常在应用,但是可曾用java程序实现,这里主要为各位提供一种利用Java实现文件解压缩的方法,和大家分享。
Java实现压缩解压缩文件和文件夹(附源码) zip unzip 压缩 解压缩
用java实现文件的压缩与解压缩并且支持中文,有多种方法可供选择,可以在比较的过程中学到更多东西
java语言实现的针对文件压缩、解压缩处理方法
用java实现huffman编码,Encode.java实现文件的压缩,Decode.java 实现文件的解压缩
Java文件压缩与解压缩是指将一个或多个文件或文件夹打包成一个压缩文件,或者将压缩文件解压缩成原始文件的过程。 常见的压缩格式包括ZIP、GZIP、TAR等,Java提供了相应的API来实现对这些格式的操作。 功能特点: ...
java 实现压缩与解压缩ZIP .docjava 实现压缩与解压缩ZIP .docjava 实现压缩与解压缩ZIP .docjava 实现压缩与解压缩ZIP .doc
简单实现文件的解压缩,支持zip文件格式的压缩和解压缩
这个实践项目旨在利用Java编程语言实现文件的压缩与解压缩功能,为用户提供一个高效、稳定且易于使用的文件处理工具。 源代码部分包含了完整的Java实现代码,包括压缩和解压缩两个主要功能。在压缩方面,代码使用了...
使用哈夫曼编码实现对文本文件的压缩和解压缩
java实现压缩与解压缩源码,demo 分享。 java实现压缩与解压缩源码。 java实现压缩与解压缩源码 java
使用Java远程上传压缩包到服务器,或者在服务器上拉去压缩包或者文件,在服务器上创建目录。
运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此程序方便地对文件进行压缩或解压缩。 程序...
此资源集包含了一套完整的Java实现的文件压缩与解压缩项目源代码、相关的毕业论文以及详尽的使用说明。它旨在提供一个全面、深入的学习和研究工具,适用于本科课程设计、毕业设计以及任何希望深入学习Java编程的学习...
用Java Swing做的图形化文件解压缩工具 支持对文件进行加解密 有兴趣的同学可以下载看看 互相学习哦
2. 解压文件:能够将压缩包中的文件解压缩出来。 3. 加密压缩:对压缩文件进行加密保护。 4. 解密解压:对加密的压缩文件进行解密解压。 ## 设计思路 本系统将基于JAVA语言开发,使用JAVA自带的Zip文件压缩与解...
关于Java实现文件的zip的解压缩 文本文档 虽然不多
Java实现压缩与解压缩ZIP import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream;...