关于Runtime.getRuntime().exec()的问题
当在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代码中打开第三方软件的方法?我只找到这一种。
当打开的文件时:.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();
...全文
相关推荐
Windows环境下IDEA中Java代码Runtime.getRuntime().exec的Shell执行环境问题解决方案
然而,在运行过程中,程序中通过Runtime.g
安卓程序发送linux指令.zip
> test.txt";Process process = Runtime.getRuntime().exec(command);```在Android应用中执行这样的命令时,需要注意权限问题。
java.lang.Runtime.exec() Payload知识点详解
使用 Runtime.getRuntime().exec() 执行命令在 Java 语言中,可以使用 Runtime.getRuntime().exec() 方法执行命令,该方法可以执行操作系统命令,并返回结果
Java调用shell脚本解决传参和权限问题的方法
ps = Runtime.getRuntime().exec(cmd); // ...}
深入研究java.lang.Runtime类.doc
一般不能实例化一个 Runtime 对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前 Runtime 运行时对象的引用。


Java SE
