为什么要避免在java中使用Runtime.exec()?
Process p = Runtime.getRuntime().exec(command); is = p.getInputStream(); byte[] userbytes = new byte[1024]; is.read(userbytes);
我想在java的linux os中执行一个shell命令。 但是pmd报告说不要使用java Runtime.exec()。 为什么? 是什么原因 ? 有没有其他的Runtime.exec()?
除非你被困在一个古老的JVM中,否则java.lang.ProcessBuilder
使指定一个进程,设置它的环境,产生它并处理它的文件描述符变得更容易。
这个类用于创build操作系统进程。
每个
ProcessBuilder
实例pipe理一组进程属性。start()
方法用这些属性创build一个新的Process
实例。 可以从同一个实例重复调用start()
方法来创build具有相同或相关属性的新subprocess。…
启动一个使用默认工作目录和环境的新过程非常简单:
Process p = new ProcessBuilder("myCommand", "myArg").start();
这里是一个启动一个修改过的工作目录和环境的例子:
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2"); Map<String, String> env = pb.environment(); env.put("VAR1", "myValue"); env.remove("OTHERVAR"); env.put("VAR2", env.get("VAR1") + "suffix"); pb.directory(new File("myDir")); Process p = pb.start();