1.编写一方法:
public void zipFile(String filename,String zipname);
将文件filename压缩成zipname2.编写一方法:
public void zipBir(String dirname,String zipname);
将目录dirname下的所有子目录和文件压缩成zipname

解决方案 »

  1.   

    如果直接写程序不行的话,你可以试试调用安装后的rar命令来完成。
    具体的rar命令,你可以在cmd 里面winrar /? 进行查看
      

  2.   

    给你一个参考
    import java.io.*;
    import java.util.zip.*;public class ZipDemo {
    public static void main(String args[])throws IOException{
    FileOutputStream fos = new FileOutputStream("zip.rar");
    CheckedOutputStream cos = new CheckedOutputStream(fos,new Adler32());
    ZipOutputStream zos = new ZipOutputStream(cos);
    BufferedOutputStream bos = new BufferedOutputStream(zos);

    String files[] = {"bruceeckel.ZipCompressOutput.txt",
    "bruceeckel.BufferToTextOutput.txt"};
    for(int i=0; i<files.length; i++){
    zos.putNextEntry(new ZipEntry(files[i]));
    System.out.println("OK");
    BufferedReader br = new BufferedReader(new FileReader(files[i]));
    int c;
    while((c=br.read())!=-1){
    bos.write(c);
    }
    br.close();
    } bos.close();
    zos.close();
    cos.close();
    fos.close();
    }
    }
      

  3.   

    /**
     * 将文件压入到相对zip中,指定相对路径
     * @param zos Zip输出流
     * @param filename 文件路径
     * @param zipFilename zip文件的相对路径
     * @throws Exception
     */
    public static void addZipFile(ZipOutputStream zos,String filename,String zipFilename) throws Exception
    {
    ZipEntry zEntry=new ZipEntry(zipFilename);
    InputStream is=new FileInputStream(filename);
    zos.putNextEntry(zEntry);
    byte[] data=new byte[1024];
    try
    {
    while(true)
    {
    int len=is.read(data);
    if(len==-1)break;
    zos.write(data,0,len);
    zos.flush();
    }
    }
    finally
    {
    if(is!=null)is.close();
    }
    }我想zip目录就不用写了吧,目录下所有文件压入,最后那个参数带上目录就可以了!
      

  4.   

    上面使用开源组件jazzlib解决了jdk zip的中文问题.