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); } } }
跟zip格式的创建有什么不同吗,把后缀改成rar FileOutputStream fos = new FileOutputStream("fileName.rar"); 这样不行吗?
楼上的给你例子了,把要生成的压缩文件后缀改成rar就ok了
示例1: 将两个class文件存档到一个名为 'classes.jar' 的存档文件中: jar cvf classes.jar Foo.class Bar.class
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);
}
}
}
FileOutputStream fos = new FileOutputStream("fileName.rar");
这样不行吗?
将两个class文件存档到一个名为 'classes.jar' 的存档文件中:
jar cvf classes.jar Foo.class Bar.class
如果是rar的话,好像没有这个api。
另外人家rar的算法也不会公开出来的
还支持linux