2011-12-31 64 views
0

我是Java開發人員,我有一個新問題。我想用另一個程序打開一個文件。我可以很容易地與java.awt.Desktop類與此代碼做到這一點:使用外部程序打開外部文件

public static void open(File document) throws IOException { 
    Desktop dt = Desktop.getDesktop(); 
    dt.open(document); 
} 

但是,有沒有辦法選擇它使用哪個程序打開文件?我的程序僅適用於Ubuntu。我想要一個包含所有可以打開該文件的常規程序的列表(右鍵單擊該文件時看到的所有選項)。如果它是一個可執行文件,它應該執行。這可能與Java?如果不是,用C++可以嗎?

回答

0

這是可能的,但可能不如使用桌面API那樣容易,因爲這可能只是在底層調用xdg-open

在桌面API引擎蓋下幾乎可以肯定調用xdg-open(如最精心設計的計劃會做),你可以達到你設置你的桌面了這樣xdg-open做正確的事情,你想要的效果。

如果這還不夠,xdg-open使用平臺工具來完成它的工作,回落到xdg-mime。這讀取.desktop文件。你可以做同樣的...

+0

感謝您的答案,但我現在還沒有解決方案。我找不到在Java中執行此操作的方法,它應該在Ubuntu(12.04)上運行。 – 2011-12-31 15:31:16

+1

桌面API不使用'xdg-open',而是使用GNOME 2庫。 – Erik 2013-04-17 02:54:49