解压tar文件,并重命名,针对javatar.jar包等不能解压包含gzip,bz2属性的文件 import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.Date;import java.util.List;public class T {public s
import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.List; public class T { public static void main(String[] args) throws Exception { extTarFileList("/home/hadoop/Desktop/bzip2.tar", "/home/hadoop/Desktop/"); } private static void extTarFileList(String filename, String directory) { File file = new File(filename); String outPath = directory + file.getName().substring(0, file.getName().length() - 4) + new Date().getTime() + "/"; File dir = new File(outPath); dir.mkdir(); String tarmd = "tar -xf " + filename + " -C " + outPath; String[] cmds = { "/bin/sh", "-c", tarmd }; Process pro = null; try { pro = Runtime.getRuntime().exec(cmds); pro.waitFor(); Listfiles = getFiles(outPath); for (File f : files) { renameFile(f); } } catch (IOException e) { System.out.println(e.getMessage()); e.printStackTrace(); } catch (InterruptedException e) { System.out.println(e.getMessage()); e.printStackTrace(); } finally { pro.destroy(); } } /** * 文件重命名 * * @param path * 文件目录 * @param oldname * 原来的文件名 * @param newname * 新文件名 * @return */ public static File renameFile(File oldfile) { File newfile = new File(oldfile.getParent() + "/" + new Date().getTime() + "-" + oldfile.getName()); if (!oldfile.exists()) { return null;// 重命名文件不存在 } oldfile.renameTo(newfile); return newfile; } /*** * 指定文件夹下的所有文件 * * @param path * @return */ public static List getFiles(String path) { File root = new File(path); List files = new ArrayList (); if (!root.isDirectory()) { files.add(root); } else { File[] subFiles = root.listFiles(); for (File f : subFiles) { files.addAll(getFiles(f.getAbsolutePath())); } } return files; } }