关于Runtime.getRuntime().exec()的问题

Tyrion2017 Tyrion2017 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
当在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();

...全文
评论 4
收藏 已收藏
分享
返回顶部
Tyrion2017
Java SE 62,620 成员 307,251 内容