我正在使用java的“Process”命令来执行shell脚本。
在这个shell脚本中,它会将文件(从文件夹)分解为更小的Mbs。
一旦文件被分解,我将使用SMTP通过电子邮件邮寄这些文件。
问题是,我的邮件功能在shell脚本实际完成砍掉我的文件之前运行。最后,没有发送电子邮件(因为显然文件夹是空的)。
以下是我的代码:
try {
log.info("Going to run the runtime.getRuntime() to execute tar zip files");
String tarLocation = prop.getProperty("tarzipfile.location") + prop.getProperty("tarshell.name");
Process p = Runtime.getRuntime().exec(new String[] {"cmd", "/c", tarLocation});
p.waitFor(); //This waitfor only waits for process, but not the shell to complete
log.info("exit: " + p.exitValue());
p.destroy();
} catch(Exception e) {
log.info("ERROR: Runtime error failed to tar files", e);
}
robot.process(); //Send out mail
我的tar文件
cd <my file dir>
tar cvzf - <my other file dir> | split --bytes=4MB - archive.tar.gz
除了让它“睡眠”几秒钟之外,有什么好的方法可以解决这个问题?