2012-12-15 86 views
1

我正在使用Java SE 6,並希望通過預定義的程序在外部進程中打開文件。目前我使用PDF文件的下面的代碼,例如:Java SE 6:如何在Ubuntu Linux上通過Runtime.getRuntime()。exec()從外部打開文件?

的Windows:

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

我會嘗試使用Desktop.open

啓動關聯應用程序來打開該文件。

如果指定的文件是目錄,則啓動當前平臺的文件管理器以將其打開。

或者你可以嘗試

return Runtime.getRuntime().exec(new String[]{ 
     "/usr/bin/evince", file.getAbsolutePath() }); 
+0

嗨彼得。非常感謝您的快速回答!我無法使用Desktop.open,因爲我需要Process對象來跟蹤文件狀態。但你的第二個建議只是完美的! – salocinx

+0

第二個選項假定您已經打破了所有參數。 ;) –

+2

是的,我認爲:-)謝謝。 – salocinx

相關問題