进来吓我一跳,原来是Java.
拜托楼主下次声明一下是"调用压缩算法",你哪里在实现zip算法了?
转贴也要写个"转",怎么现在写调用算法不兴写"调用"呢?

解决方案 »

  1.   

    刚写过一个zip的程序,这么长,我就不看了,你参考一下我的吧:)
    public class ZipUtil {
    public static void zip(String zipFile,String inputFile){
    int BUFFER = 2048;
    FileOutputStream  fos = null; 
    ZipOutputStream zFile = null; 

    try{
    fos = new FileOutputStream(zipFile);
    zFile = new ZipOutputStream(new BufferedOutputStream(fos));
    zFile.setMethod(ZipOutputStream.DEFLATED);
    File f=new File(inputFile);
    if(f.isDirectory()) {
    File files[]=f.listFiles();
    for(int i=0; i<files.length; i++) {
    zipDir(zFile,files[i].toString());
    }
    }
    else {
    zipFiles(zFile,inputFile);
    } String files[]=f.list();
    //int num=files.length;
    int count;

    }
    catch(Exception e) {
    System.out.println("[zip] : " + e.toString());
    }
    finally {
    try {
    zFile.close();
    }
    catch(Exception e2) {
    }
    }
    }
    private static void zipDir(ZipOutputStream zFile, String inputFile) {
    File f = new File(inputFile);
    if(f.isDirectory()) {
    File files[]=f.listFiles();
    for(int i=0; i<files.length; i++) {
    zipDir(zFile,files[i].toString());
    }
    }
    else {
    zipFiles(zFile,inputFile);
    }
    }
    private static void zipFiles(ZipOutputStream zFile, String inputFile) {
    int BUFFER = 2048;
    int count;
    try {
    ZipEntry entry=new ZipEntry(inputFile);
    zFile.putNextEntry(entry);
    BufferedInputStream bis=new BufferedInputStream(new FileInputStream(inputFile),BUFFER);
    byte data[]=new byte[BUFFER];
    while((count=bis.read(data,0,BUFFER))!=-1){
    zFile.write(data,0,BUFFER);
    }
    bis.close();
    }
    catch(Exception e) {
    System.out.println("[zipFiles] : " + e.toString());
    }
    }
    }