在OS X上,我试图执行.exec某些内容,但是当路径包含空格时,它将不起作用。我尝试用引号将路径引起来,转义空格,甚至使用\ u0020。

例如,这有效:

Runtime.getRuntime().exec("open /foldername/toast.sh");

但是,如果有空间,这些都不起作用:
Runtime.getRuntime().exec("open /folder name/toast.sh");

Runtime.getRuntime().exec("open \"/folder name/toast.sh\"");

Runtime.getRuntime().exec("open /folder\\ name/toast.sh");

Runtime.getRuntime().exec("open /folder\u0020name/toast.sh");

有想法吗?

编辑:转义的反斜杠...仍然没有用。

最佳答案

Sun's forums上有此问题的摘要...似乎是一个非常普遍的问题,不仅限于OSX。

该主题的最后一篇文章总结了建议的解决方案。本质上,使用采用Runtime.exec数组的String[]形式:

String[] args = new String[] { "open", "\"/folder name/toast.sh\"" };

或(论坛建议也可以)
String[] args = new String[] { "open", "folder name/toast.sh" };

07-24 12:39
查看更多