用java压缩文件夹/文件

压缩文件夹代码:
import java.io.File;

import org.apache.tools.zip.ZipOutputStream; //这个包在ant.jar里,要到官方网下载

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.zip.ZipInputStream;

import java.util.zip.ZipEntry;



public class CompressBook {



/**//*

* inputFileName 输入一个文件夹

* zipFileName 输出一个压缩文件夹

*/

public void zip(String inputFileName) throws Exception {

    String zipFileName = "C:\\temp\\"; //打包后文件名字

    if(com.turbocms.tools.Config.Debug.equals("true"))System.out.println(zipFileName);

    zip(zipFileName, new File(inputFileName));

}

public void zipOfName(String inputFileName,String zipFileName) throws Exception {

    zip(zipFileName, new File(inputFileName));

}



private void zip(String zipFileName, File inputFile) throws Exception {

    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));

    zip(out, inputFile, "");

    if(com.turbocms.tools.Config.Debug.equals("true"))System.out.println("zip done");

    out.close();

}



private void zip(ZipOutputStream out, File f, String base) throws Exception {

    if (f.isDirectory()) {

       File[] fl = f.listFiles();

       out.putNextEntry(new org.apache.tools.zip.ZipEntry(base + "/"));

       base = base.length() == 0 ? "" : base + "/";

       for (int i = 0; i < fl.length; i++) {

       zip(out, fl[i], base + fl[i].getName());

     }

    }else {

       out.putNextEntry(new org.apache.tools.zip.ZipEntry(base));

       FileInputStream in = new FileInputStream(f);

       int b;

       if(com.turbocms.tools.Config.Debug.equals("true"))System.out.println(base);

       while ( (b = in.read()) != -1) {

        out.write(b);

     }

     in.close();

   }

}



public static void main(String [] temp){

    CompressBook book = new CompressBook();

    try {

      // book.zip("E:\\temp\\pes\\temp\\115411B78AF6F2CDD513393FB8F0A8C6");//你要压缩的文件夹

    }catch (Exception ex) {

       ex.printStackTrace();

   }

}

}

文件压缩

 

import java.io.*;

import java.util.zip.*;//ZipOutputStream这个流在这里

import java.util.*;



public class ZipOutputStreamTest

{

     public static void main(String[] args) throws Exception

     {

       File f = new File("a.jpg");

       FileInputStream fis = new FileInputStream(f);

       BufferedInputStream bis = new BufferedInputStream(fis);

       byte[] buf = new byte[1024];

       int len;

       FileOutputStream fos = new FileOutputStream(f.getName()+".zip");

       BufferedOutputStream bos = new BufferedOutputStream(fos);

       ZipOutputStream zos = new ZipOutputStream(bos);//压缩包

       ZipEntry ze = new ZipEntry(f.getName());//这是压缩包名里的文件名

       zos.putNextEntry(ze);//写入新的 ZIP 文件条目并将流定位到条目数据的开始处



       while((len=bis.read(buf))!=-1)

       {

          zos.write(buf,0,len);

          zos.flush();

       }

       bis.close();

       zos.close(); 

     }

}

你可能感兴趣的:(java压缩)