当在java代码中调用第三方软件打开某个文件时,我只找到了Runtime.getRuntime().exec()这个函数。但这个函数用的时候遇到了个问题:主要是p.waitFor();这个函数。
当打开的文件时:.txt,.pdf,.rar等格式时是正确的,p.waitFor();确实第三方软件关闭时,才继续向下执行;但对于某些格式的文件,比如.jpg格式,p.waitFor();并没起作用。
我获得了p进程的返回值,对于以上几种打开文件的方式,p进程都是正常退出。
现在的表现是这样:Runtime.getRuntime().exec()返回的进程p,对于.txt等格式来说,指的时第三方软件从开始到关闭的整个周期;而对于.jpg格式的文件,p进程的生命周期仅仅是打开文件,即:打开了一个文件,p进程就结束了。
以下是代码,想达到的效果是:调用windows默认的图片查看器打开D:/1.jpg图片文件,当查看完关闭后,就把该文件删除。但是实际上,刚调用第三方程序打开文件,就直接删除了,结果就查看不了了。请问这是怎么回事?
另外,还有没有其他在java代码中打开第三方软件的方法?我只找到这一种。
try {
Process p = Runtime.getRuntime().exec("cmd.exe /c " + “D:/1.jpg”);
int exitValue = p.waitFor();
} catch (Exception e) {
e.printStackTrace();
}
File file = new File("D:/1.jpg");
file.delete();