在默认文本编辑器中打开文本文件…通过Java?

好。 简单的问题。 可能不是那么简单的回答:

我有一个用Java下载的文件,我知道它是一个文本文件。 有什么方法可以使用Java在默认文本编辑器中打开该文本文件? 它必须适用于所有操作系统,否则我只能用记事本打开它。

:\我想如果没有办法做到这一点,我可以使用JOptionPane并显示文本文件的内容……

你可以这样做:

java.awt.Desktop.getDesktop().edit(file); 

这链接到java.awt.Desktop上的教程文章 :

Java™标准版第6版缩小了本机应用程序和Java应用程序的性能和集成之间的差距。 除了新的系统托盘function,启动画面支持和JTable增强打印外,Java SE版本6还提供了Desktop API(java.awt.Desktop)API,允许Java应用程序与特定文件类型相关的默认应用程序进行交互。主机平台。

它是跨平台的,但可能无法在任何地方得到支持。 您可以调用一种方法来检查Desktop API是否可用,名为isDesktopSupported(有关详细说明,请参阅链接)。 我前几天使用此API在Swing客户端中打开PDF。

不幸的是,有一个已知的错误会影响某些会破坏JVM的Windows平台(XP和2003) 。 像往常一样写一次,到处调试 。 无论如何,对于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等价物。