繁体   English   中英

可执行文件的Java文件路径包含空格

[英]Java File path to Executable has spaces

我有一个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中。)

错误图片

消除错误的最佳方法是什么? 提前致谢!


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

当我使用C:\\Tools\\IT Support\\bookmark.htm我得到了 在此处输入图片说明

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

如果使用Runtime.exec(String command) ,则Java仅在空白处分割命令。

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

另请参见g ++:找不到文件

或者使用ProcessBuilder这样的东西:

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

尝试

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM