在网上找了一下,没有找到java解压rar文件,只找到了,zip文件,
下面是加压和加压的一个实例:
用到了一个ant.jar 里面的一个org.apache.tools.zip.*包
下面是代码:实例工程在附件上,希望对你们有帮助
文件夹是中文乱码未解决:
解压:
public class UnZip { static final int BUFFER = 2048; public static void main(String argv[]) { try { String fileName = "E:/myfiles.zip"; String filePath = "E:/"; ZipFile zipFile = new ZipFile(fileName); Enumeration emu = zipFile.entries(); int i=0; while(emu.hasMoreElements()){ ZipEntry entry = (ZipEntry)emu.nextElement(); //会把目录作为一个file读出一次,所以只建立目录就可以,之下的文件还会被迭代到。 if (entry.isDirectory()) { new File(filePath + entry.getName()).mkdirs(); continue; } BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(entry)); File file = new File(filePath + entry.getName()); //加入这个的原因是zipfile读取文件是随机读取的,这就造成可能先读取一个文件 //而这个文件所在的目录还没有出现过,所以要建出目录来。 File parent = file.getParentFile(); if(parent != null && (!parent.exists())){ parent.mkdirs(); } FileOutputStream fos = new FileOutputStream(file); BufferedOutputStream bos = new BufferedOutputStream(fos,BUFFER); int count; byte data[] = new byte[BUFFER]; while ((count = bis.read(data, 0, BUFFER)) != -1) { bos.write(data, 0, count); } bos.flush(); bos.close(); bis.close(); } zipFile.close(); } catch (Exception e) { e.printStackTrace(); } } }
加压
public class CompressBook { public CompressBook() {} /* * inputFileName 输入一个文件夹 * zipFileName 输出一个压缩文件夹 */ public void zip(String inputFileName,String zipFileName) throws Exception { System.out.println(zipFileName); zip(zipFileName, new File(inputFileName)); } private void zip(String zipFileName, File inputFile) throws Exception { ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName)); zip(out, inputFile, ""); System.out.println("zip done"); out.close(); } private void zip(ZipOutputStream out, File f, String base) throws Exception { if (f.isDirectory()) { File[] fl = f.listFiles(); out.putNextEntry(new org.apache.tools.zip.ZipEntry(base + "/")); base = base.length() == 0 ? "" : base + "/"; for (int i = 0; i < fl.length; i++) { zip(out, fl[i], base + fl[i].getName()); } }else { out.putNextEntry(new org.apache.tools.zip.ZipEntry(base)); FileInputStream in = new FileInputStream(f); int b; System.out.println(base); while ( (b = in.read()) != -1) { out.write(b); } in.close(); } } public static void main(String [] temp){ CompressBook book = new CompressBook(); try { book.zip("E:/test/a","e:/test/test.zip");//你要压缩的文件夹 }catch (Exception ex) { ex.printStackTrace(); } } }