java解压RAR压缩文件



java利用haoya解压目录下的所有rar文件举例:


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;


public class UnrarHaoZipC {


private  final static String FILE_DIR = "E:\\zhang\\";
    private  final static String FILE_TEXT_EXT = "rar";
    private static List<File> fileList=new ArrayList<File>();
    
    private static  Process p;


    public static void main(String args[]) {
      //  new DelFileByExt().deleteFile(FILE_DIR, FILE_TEXT_EXT);
    new UnrarHaoZipC().findFile(FILE_DIR, FILE_TEXT_EXT);
   
    try {
p = Runtime.getRuntime().exec("cmd");
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}


new ConsoleReturn(p.getInputStream()).start();
new ConsoleReturn(p.getErrorStream()).start();
new ConsoleOutput(p.getOutputStream()).start();
    }
    
    // TODO del
    public void findFile(String folder, String ext) {        
        File dir = new File(folder);
        //list out all the file name with .ext extension
        if (dir.isDirectory()) {
File[] list=dir.listFiles();
for (int i = 0; i < list.length; i++) {
findFile(list[i].getPath(), ext);
}
}else if (dir.getName().endsWith(ext)) {
fileList.add(dir);
//System.out.println(dir.getAbsolutePath());
//System.out.println(dir.getPath().replaceAll("\\..*", ""));
//System.out.println(dir.getName());
            System.out.println("add file : " + folder+"\\"+dir.getName() );
}else {
return;
}
    }
    
    private static class ConsoleOutput extends Thread {
private OutputStream os;


public ConsoleOutput(OutputStream os) {
this.os = os;
}


@Override
public void run() {

String cmd;
PrintWriter pw = new PrintWriter(os);
pw.println("c:");
pw.flush();
pw.println("cd C:\\Program Files (x86)\\HaoZip");
pw.flush();

for (File  file : fileList) {
//HaoZipC x test.zip -aoa :从压缩文件 test.zip 中释放所有文件并却不做提示直接覆盖现有文件。
cmd="haozipc"+" x "+file.getPath()+" -aoa -o"+file.getPath().replaceAll("\\..*", "");
pw.println(cmd);
pw.flush();
}
pw.close();
}
}


private static class ConsoleReturn extends Thread {
private InputStream is;


public ConsoleReturn(InputStream is) {
this.is = is;
}


@Override
public void run() {
InputStreamReader reader = null;
try {
reader = new InputStreamReader(is, "GBK");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
char[] buf = new char[1024];
int size;
while (true) {
try {
size = reader.read(buf);
} catch (IOException e) {
e.printStackTrace();
break;
}
if (size != -1) {
System.out.print(new String(buf, 0, size));
} else {
break;
}
}
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值