我现在想用java写一个压缩的应用!!!
将一文件夹下的所有文件夹(所有文件夹下都有很多文件)进行压缩。
请问各位用java怎样实现的呢?我百度了一下,但很多都是关于将文件压缩的,而不是将文件夹下所有的文件压缩的!急呀!先谢谢了!

解决方案 »

  1.   

    写什么啊...直接用rar不久行了...最新的rar3.7Final dos下的才324k你用加密压缩,然后改下后缀名不就成你自己的了?
      

  2.   

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;public class Test {  static final int BUFFER = 2048;  public static void main(String[] args) throws IOException {
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("f:/yx.zip"));
        ZipOutputStream out = new ZipOutputStream(bos);
        // f:/yx 是一个目录,下面有一些文件和目录
        File f = new File("f:/yx");
        put(f, out, "");
        out.close();
        System.out.println("OK");
      }  public static void put(File f, ZipOutputStream out, String dir) throws IOException {
        if (f.isDirectory()) {
          File[] files = f.listFiles();
          dir = dir + (dir.length() == 0 ? "" : "/") + f.getName();
          for (File file : files) {
            put(file, out, dir);
          }
        } else {
          byte[] data = new byte[BUFFER];
          FileInputStream fi = new FileInputStream(f);
          BufferedInputStream origin = new BufferedInputStream(fi, BUFFER);
          dir = dir.length() == 0 ? "" : dir + "/" + f.getName();
          ZipEntry entry = new ZipEntry(dir);
          out.putNextEntry(entry);
          int count;
          while ((count = origin.read(data, 0, BUFFER)) != -1) {
            out.write(data, 0, count);
          }
          origin.close();
        }
      }
    }API 问题,不能存在中文目录和文件名,否则会现目录/文件名乱码。
      

  3.   

    到网上找了找,把下面的两行import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;替换成:import org.apache.tools.zip.ZipEntry;
    import org.apache.tools.zip.ZipOutputStream;其他的不变,就可以支持中文了,类库在 ant.jar 中,做 Java 的应该每台机器都有,里面还有 tar 的压缩工具包。
      

  4.   

    嗯,有一个问题:运行报错:
    java.util.zip.ZipException: ZIP file must have at least one entry
      

  5.   

    Eclipse软件中,点击run - run configurations - arguments -program arguments对话框中,添加你要压缩的文件路径url即可。