java調用winrar解壓文件[rar.bz2.zip.....]

package com.czp;

import java.io.File;
import java.util.Properties;

public class UnRarFile {

	public static void main(String[] args) {
		UnRarFile unrar = new UnRarFile();
		unrar.unRarFileCurDir(new File("d:/ftpd/pm/test/*.bz2"));
	}

	/**
	 * 解壓文件
	 * 
	 * @param target
	 * @param oldFile
	 */
	public void unRarFile(File target, File oldFile) {
		try {
			if (isWindow()) {
				String path = target.getParentFile().getAbsolutePath();
				File tmp = target.getParentFile();
				if (path.charAt(path.length() - 1) != ((char) File.separatorChar)) {
					tmp = new File(path + File.separator);
					if (!tmp.exists())
						tmp.mkdirs();
				}
				String cmd2 = "C:\\Program Files\\WinRAR\\winrar.exe x -r -o+ -ibck -y "
						+ oldFile + " *.* " + tmp;
				Runtime rt = Runtime.getRuntime();
				Process pre = rt.exec(cmd2);
				if (0 != pre.waitFor()) {
					pre.destroy();
				}
				rt.runFinalization();
				System.out.println(cmd2);
			} else {
				System.out.println("can't get rar command abort");
			}
		} catch (Exception e) {
			System.out.println("解壓發生異常");
		}
	}

	/**
	 * 解壓到當前目錄
	 * 
	 * @param filePath
	 */
	public void unRarFileCurDir(File filePath) {
		unRarFile(filePath, filePath);
	}

	/**
	 * 是否是window
	 * 
	 * @return
	 */
	public boolean isWindow() {
		Properties properties = System.getProperties();
		String os = properties.getProperty("os.name");
		if (os != null && os.contains("Windows"))
			return true;
		return false;
	}

}

發佈了82 篇原創文章 · 獲贊 23 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章