2012-09-12 30 views
2

这是代码,我会用正常执行快捷方式文件(.LNK)如何使用空间在Java中使用的ProcessBuilder

//Get Directory 
    String currentDir = new File(game.getGamePath()).getCanonicalPath(); 

    //Parse Directory to put apostrophes around shortcut name  
    currentDir = currentDir.substring(0, currentDir.lastIndexOf("\\") + 1) + '"' +      
    currentDir.substring(currentDir.lastIndexOf("\\") + 1, currentDir.length()) + '"'; 

    //prep the launcher 
    ProcessBuilder processBuild = new ProcessBuilder(); 
    processBuild.command("cmd", "/c", "start" ,"/wait", "", currentDir); 

    //launch 
    Process = processBuild.start(); 
    try { 
     Process.waitFor(); 
    } catch (InterruptedException ex) { 

    } 

问题是,当快捷方式的文件名中有空格,我得到一个推出了快捷方式从窗户说 错误它不能加载[WordAfterSpace.ink]

例如说我有值currentDir [桌面\ A B.lnk]

解析的这将是[桌面\“A B.墨水“],这完美的命令提示符。

问题是我会得到这个错误,如果我是用上面的代码:

Windows无法找到“B.ink”,确保在正确,键入名称,然后再试一次

回答

1

使用\“在字符串中获得双引号 另外,从起头引用整个链接,而不仅仅是链接名称,因为您可能在其之前有其他空格,这将使您免于麻烦

+0

我试过并且我所得到的只是一个命令提示符控制台这是指向括号内的目录 –

+0

是否可以通过调用game.getGamePath()来打开路径,而不是链接? – nick

+0

game.getGamePath()输出一个字符串,其中包含从JFileChooser中提取的路径。 –

相关问题