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();
}
}
}
}