使用java runtime执行命令。
调用7zip命令,分卷压缩/home/test下的201301文件夹为201301.zip文件,每个分卷压缩文件大小为1M。
使用下面的命令压缩得到的文件和我直接在命令窗口执行语句得到的压缩文件不一致,下面程序得到的文件没压缩完整,有部分子目录不在压缩包内。
求指教。程序未抛出异常private static final class CompressThread extends Thread {
public void run(){
try {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("/bin/bash", null, new File("/bin"));
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(process.getOutputStream())), true);
out.println("cd /home/test");
out.println("7za a 201301.zip 201301 -v1m");
String line;
  while ((line = in.readLine()) != null) {
     System.out.println(line);
  }
        process.waitFor();
        in.close();
        out.close();
        process.destroy();
} catch (Exception e) {
e.printStackTrace();
}
}
}

解决方案 »

  1.   

    直接调用shell脚本,执行压缩命令,结果也是不完整的。
    如果调用shell脚本,在后台执行该命令,则打包结果是完整的。
    由此判断,问题应该在命令执行的时间上。
    命令未执行结束,java程序就跳过了。
    有没有解决的方法?
      

  2.   

    在调用的地方加了Thread.sleep(),目的是达到了,但是这个时间上设置还有待商榷。
    容后再研究。。