`
linfrank
  • 浏览: 7366 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

java 压缩单个文件或文件夹

阅读更多

import java.io.*;
import java.util.*;
import java.util.zip.*;

public class MyZipFile
{

public static final int BUFFERSIZE=1024;
//压缩单个文件
/**
* zipFileName 解压后的的压缩文件名(包含路径)
* fileName   需要压缩的文件名 (包含路径)
* e.g. zipFile("E:/test.zip","E:/test.jpg");
*/

/*public static boolean zipFile(String zipFileName,String fileName) throws IOException
{
boolean flag=false;
byte[] b=new byte[1024];
int len=0;
File file=new File(fileName);
File zipFile=new File(zipFileName);

BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
ZipOutputStream zos=new ZipOutputStream(
new BufferedOutputStream(
new FileOutputStream(zipFile)));
ZipEntry ze=new ZipEntry(file.getName());
zos.putNextEntry(ze);

while((len=bis.read(b))!=-1)
{
zos.write(b,0, len);
zos.flush();
}
bis.close();
zos.close();

flag=true;
return flag;


}*/

/*
* 该函数是压缩文件的实现函数,采用递归调用
* ZipOutputStream zos  压缩文件输出流
* File file  需要压缩的文件
* String zipEntryFile 文件在压缩包中的全路径名
*/

public static boolean zipFile(ZipOutputStream zos,File file,String zipEntryFile) throws IOException
{
boolean flag=false;
byte[] b=new byte[BUFFERSIZE];
int len=0;
BufferedInputStream bis=null;

//如果是目录,递归调用
if(file.isDirectory())
{
File[] files=file.listFiles();
for(File f:files)
zipFile(zos,f,zipEntryFile+File.separator+f.getName());
}
else
{
ZipEntry ze=new ZipEntry(zipEntryFile);
zos.putNextEntry(ze);

try
{
bis=new BufferedInputStream(new FileInputStream(file));
while((len=bis.read(b))!=-1)
{
zos.write(b,0, len);
zos.flush();
}


}
catch(IOException ex)
{
throw ex;
}
finally
{
bis.close();
}

}


flag=true;
return flag;


}


/**
* 压缩整个文件夹
* 压缩整个文件夹的处理方式和压缩当个文件类似,可以采用递归调用
*
*/
public static boolean zipFile(String zipFileName,String fileName) throws IOException
{
boolean flag=false;
ZipOutputStream zos=null;
try
{
//定义压缩流
File zipFile=new File(zipFileName);
zos=new ZipOutputStream(
new BufferedOutputStream(new FileOutputStream(zipFile)));

//定义文件对象
File file=new File(fileName);

flag=zipFile(zos,file,file.getName());
}
catch(IOException ex)
{
throw ex;
}
finally
{
zos.close();
}

return flag;



}


  
public static void main(String[] args)
{

try
{
boolean flag=zipFile("E:/test.zip","E:/test");
System.out.println("Compress "+(flag?"OK":"Failed"));
}
catch(IOException ex)
{
ex.printStackTrace();
}
}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics