1

我正在使用 Java SE 6,并希望通过预定义的程序在外部进程中打开文件。目前,我正在为 pdf 文件使用以下代码,例如:

视窗:

public static Process openFile(File file) {
    return Runtime.getRuntime().exec("C:/Program Files (x86)/Adobe/Reader 10.0/Reader/AcroRd32.exe \""+file.getAbsolutePath()+"\"");
}

Ubuntu Linux:

public static Process openFile(File file) {
    return Runtime.getRuntime().exec("/usr/bin/evince \""+file.getAbsolutePath()+"\"");
}

在 Windows 上,这适用于所有文件。但是在 ubuntu 上,只要文件路径中有空格,它就会尝试打开多个文件。这是一个例子:

contract.pdf -> works on windows and ubuntu
contract 1 (copy).pdf -> works only on windows, ubuntu tries to open 3 different files (contract, 1, and (copy).pdf)

我需要什么特殊字符告诉 ubuntu 它应该将带有空格的文件路径作为一个文件处理?

提前感谢您的帮助!最好的祝福

4

1 回答 1

4

我会尝试使用Desktop.open

启动关联的应用程序以打开文件。

如果指定的文件是目录,则启动当前平台的文件管理器打开它。

或者你可以试试

return Runtime.getRuntime().exec(new String[]{ 
        "/usr/bin/evince", file.getAbsolutePath() });
于 2012-12-15T11:22:04.257 回答