我想在java代码中将几个文件打包?java.util.zip好象不提供这种功能,有没有什么开源项目?

解决方案 »

  1.   

    java.util.zip是可以的!给你个例子,thinking in java里面的!import java.io.*;
    import java.util.*;
    import java.util.zip.*;
    public class ZipCompress{
    public static void main(String[] args)throws IOException{
    FileOutputStream f = new FileOutputStream("test.zip");
    CheckedOutputStream csum = new CheckedOutputStream(f,new Adler32());
    ZipOutputStream zos = new ZipOutputStream(csum);
    BufferedOutputStream out = new BufferedOutputStream(zos);
    zos.setComment("A test of java Zipping");

    for(int i=0;i<args.length;i++){
    System.out.println("Writing file "+args[i]);
    BufferedReader in = new BufferedReader(new FileReader(args[i]));
    zos.putNextEntry(new ZipEntry(args[i]));
    int c;
    while((c=in.read())!=-1)
        out.write(c);
    in.close();
    }
    out.close();
    System.out.println("Checksum: "+csum.getChecksum().getValue());

    System.out.println("Reading file");
    FileInputStream fi = new FileInputStream("test.zip");
    CheckedInputStream csumi = new CheckedInputStream(fi,new Adler32());
    ZipInputStream in2 = new ZipInputStream(csumi);
    BufferedInputStream bis = new BufferedInputStream(in2);
    ZipEntry ze;
    while((ze =in2.getNextEntry())!=null){
    System.out.println("Reading file "+ze);
    int x;
    while((x=bis.read())!=-1)
       System.out.write(x);
    }
    System.out.println("Checksum: "+csumi.getChecksum().getValue());
    bis.close();

    ZipFile zf = new ZipFile("test.zip");
    Enumeration e = zf.entries();
    while(e.hasMoreElements()){
    ZipEntry ze2 = (ZipEntry)e.nextElement();
    System.out.println("File :"+ze2);
    }
    }
    }
      

  2.   

    跟zip格式的创建有什么不同吗,把后缀改成rar
    FileOutputStream fos = new FileOutputStream("fileName.rar");
    这样不行吗?
      

  3.   

    楼上的给你例子了,把要生成的压缩文件后缀改成rar就ok了
      

  4.   

    示例1:
    将两个class文件存档到一个名为 'classes.jar' 的存档文件中:
     jar cvf classes.jar Foo.class Bar.class
      

  5.   

    JAVA中,只能创建一个zip压缩文件。
    如果是rar的话,好像没有这个api。
    另外人家rar的算法也不会公开出来的
      

  6.   

    其实就用zip多好呀,
    还支持linux