![](/img/trans.png)
[英]How do I tell Java to open a file using the system's default text editor, if it doesn't have a known extension?
[英]Open a text file in the default text editor… via Java?
好。 簡單的問題。 也許不是那么簡單的回答:
我有一個用Java下載的文件,我知道它是一個文本文件。 有什么方法可以使用Java在默認文本編輯器中打開該文本文件? 它必須適用於所有操作系統,否則我只能用記事本打開它。
:\\我想如果沒有辦法做到這一點,我可以使用JOptionPane並顯示文本文件的內容......
你可以這樣做:
java.awt.Desktop.getDesktop().edit(file);
Java™標准版第6版縮小了本機應用程序和Java應用程序的性能和集成之間的差距。 除了新的系統托盤功能,啟動畫面支持和JTable的增強打印外,Java SE版本6還提供了Desktop API(java.awt.Desktop)API,它允許Java應用程序與特定文件類型相關的默認應用程序進行交互。主機平台。
它是跨平台的,但可能無處不在。 您可以調用一種方法來檢查Desktop API是否可用,稱為isDesktopSupported(有關詳細說明,請參閱鏈接)。 我前幾天使用此API在Swing客戶端中打開PDF。
不幸的是,有一個已知的錯誤會影響某些Windows平台(XP和2003) ,這些錯誤會導致JVM崩潰。 像往常一樣寫一次,到處調試 。 無論如何,對於Windows,有一個很好的解決方法仍然使用用戶的首選應用程序:
if (System.getProperty("os.name").toLowerCase().contains("windows")) {
String cmd = "rundll32 url.dll,FileProtocolHandler " + file.getCanonicalPath();
Runtime.getRuntime().exec(cmd);
}
else {
Desktop.getDesktop().edit(file);
}
Desktop.getDesktop().edit(File f);
當然你可以在文本編輯器中配置並使用Runtime.exec來啟動它。 但是我無法想出任何確定默認編輯器的方法,特別是在與系統無關的方式中。
也許你最好的選擇是確定你所在的幾個最流行的平台中的哪一個,然后找到一種方法來啟動該平台上的默認編輯器。 例如,在Window上你會得到默認編輯器,如果你做“啟動filename.txt”,我很確定有一個Linux等價物。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.