[英]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.