Java文件路径到Executable有空格

时间:2013-08-13 18:40:10

标签: java file path space

我有一个Java程序,要求用户输入需要执行的文件的路径。

路径可以是这样的例子:C:/ProgramFiles/Citrix/ICA Client/pnagent.exe我使用此路径创建一个File对象,并检查以确保它存在,并检查以确保它是一个文件,并检查确保它是可执行的。就File而言,它是一个完全有效的对象。

注意: File 对象称为“脚本”

但是当我运行脚本时,我会收到空​​格错误。

Runtime rt = java.lang.Runtime.getRuntime();
Process pp = rt.exec(script.getAbsolutePath());

我100%第一行正常工作。我收到的错误是下图:(我把它显示在JOptionPane中。)

Error Image

删除错误的最佳方法是什么?先谢谢!


尝试解决方案#1: Process pp = rt.exec("\""+script.getAbsolutePath()+"\"");

当我使用C:\Tools\IT Support\bookmark.htm时,我得到了 enter image description here

2 个答案:

答案 0 :(得分:4)

修改
到目前为止,最可靠的方法是使用Runtime.exec(String[] cmdarray)

如果使用Runtime.exec(String command),Java只会在空格上拆分命令。

  

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

另见g++: File not found

或使用ProcessBuilder这样的内容:

ProcessBuilder pb = new ProcessBuilder("ln", "-s", "dir1/dir2", "my dir/dir2");
Process p = pb.start();

答案 1 :(得分:1)

尝试

String[] commands = {"cmd", "/c", "start", "\"DummyTitle\"",script.getAbsolutePath()};
Runtime.getRuntime().exec(commands);

这是一个仅限Windows的解决方案。

java.awt.Desktop可能是您情况下更好的解决方案,因为您需要“文件关联”机制。

public static void open(File document) throws IOException {
    Desktop dt = Desktop.getDesktop();
    dt.open(document);
}