package cn.itcast;
import java.util.zip.*;
import java.io.*;
public class CreateZipFile {
private static void DirectoryZip(ZipOutputStream out, File f, String base) throws Exception
{
if (f.isDirectory())
{
File[] fl = f.listFiles();
out.putNextEntry(new ZipEntry(base+"/"));
if(base.length()==0)
{
base="";
}
else
{
base=base+"/";
}
for (int i = 0; i < fl.length; i++)
{
DirectoryZip(out, fl[i], base + fl[i].getName());
}
}
else{
out.putNextEntry(new ZipEntry(base));
FileInputStream in = new FileInputStream(f);
int b;
System.out.println(base);
while ( (b = in.read()) != -1)
{
out.write(b);
}
in.close();
}
}
public static void FileZip(ZipOutputStream zos,File file) throws Exception
{
if(file.isFile())
{
zos.putNextEntry(new ZipEntry(file.getName()));
FileInputStream fis=new FileInputStream(file);
int buf=0;
while((buf=fis.read())!=-1)
{
zos.write(buf);
}
fis.close();
System.out.println(file.getName());
}
else
{
DirectoryZip(zos,file,"");
}
}
public static void main(String[] args) throws Exception {
// TODO 自动生成方法存根
long start = System.currentTimeMillis();
ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(args[1]));
FileZip(zos,new File(args[0]));
zos.close();
long end = System.currentTimeMillis();
System.out.println('/n'+""+'/n'+"耗用时间(秒) : "+(end-start)/1000+" "+'/n'+ " -----恭喜您! 压缩完毕!!!");
}
}
此程序接收接受两个参数 第一个是你要压缩的文件或目录的路径,第二个是你要把压缩的文件放到什么地方的路径 由于java.util.zip包对中文目录问题的不支持 所以本程序不能压缩中文目录和文件,如果想解决这个问题的话可以去apache去下载一个名为org.apache.tools.zip 包 可以解决这个中文目录名问题....