传递给执行官的路径

我正在尝试使用exec函数。 可执行文件的路径包含空格,这让我感到悲伤我的代码看起来像这样

Runtime.getRuntime().exec("\"C:\\Program Files (x86)\\ASL\\_ASL Software Suite_installation.exe\"", null, new File("\"C:\\Program Files (x86)\\ASL\\_ASL Software Suite_installation\"")); 

当执行此操作时,我得到一个例外 –

 Cannot run program ""c:\Program" 

如果有人能帮我解决这个问题,我将不胜感激

提前致谢

Runtime.exec(String command, String[] envp, File dir)

在具有指定环境和工作目录的单独进程中执行指定的字符串命令。

这是一种方便的方法。 调用exec(command, envp, dir)的forms与调用exec(cmdarray, envp, dir) ,其中cmdarraycommand中所有标记的数组。

更准确地说, command字符串使用由调用new StringTokenizer(command)创建的StringTokenizer分解为标记,而不进一步修改字符类别。 然后,由标记器生成的标记以相同的顺序放置在新的字符串数组cmdarray中。

这意味着无论外部引号如何,第一个字符串都会被分成标记。 使用Runtime.exec(String[] cmdarray, String[] envp, File dir)版本来避免可执行路径的标记化。

或者,使用ProcessBuilder

 File d = new File("C:/Program Files (x86)/ASL/_ASL Software Suite_installation"); ProcessBuilder pb = new ProcessBuilder(d.getAbsolutePath() + "/main.exe"); Process p = pb.directory(d) .start(); 

看到:

  • 为什么要避免在java中使用Runtime.exec()?
  • ProcessBuilder与Runtime.exec()

您不需要再次引用文件名。 Java将为您处理它,只需将正确的文件名作为字符串给出

 Runtime.getRuntime().exec( "C:\\Program Files (x86)\\ASL\\_ASL Software Suite_installation.exe", null, new File("C:\\Program Files (x86)\\ASL\\_ASL Software Suite_installation"));