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

在默认文本编辑器中打开文本文件。。。通过Java?,java,download,text-files,Java,Download,Text Files,嗯。简单的问题。也许答案并不那么简单: 我有一个用Java下载的文件,我知道它是一个文本文件。是否有任何方法可以使用Java在任何默认文本编辑器中打开该文本文件?它必须适用于所有操作系统,否则我只能用记事本打开它 :\n我想如果没有办法,我可以使用JOptionPane并显示文本文件的内容…您可以使用: java.awt.Desktop.getDesktop().edit(file); : 爪哇™ 标准版第6版 缩小绩效之间的差距 本地应用程序的设计和集成 和Java应用程序。随着 新的系统托

嗯。简单的问题。也许答案并不那么简单:

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

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

您可以使用:

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

爪哇™ 标准版第6版 缩小绩效之间的差距 本地应用程序的设计和集成 和Java应用程序。随着 新的系统托盘功能,飞溅 屏幕支持和增强的打印 对于JTables,Java SE版本6 提供桌面API (java.awt.Desktop)API,它允许 与之交互的Java应用程序 与关联的默认应用程序 主机上的特定文件类型 站台

它是跨平台的,但可能不在任何地方都得到支持。您可以调用一个方法来检查桌面API是否可用,称为isDesktopSupported(有关更多说明,请参阅链接)。前几天我使用这个API在Swing客户端中打开PDF

不幸的是,有一个错误会使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);
}

当然,您可以在文本编辑器中进行配置,并使用Runtime.exec启动它。但是我想不出任何方法来确定默认编辑器,尤其是以独立于系统的方式


也许您最好的选择是确定您所处的几个最流行的平台中的哪一个,然后找到在该平台上启动默认编辑器的方法。例如,在Windows上,如果执行“start filename.txt”,您将获得默认编辑器,我很确定有一个与Linux等效的编辑器。

OK Cool——这是跨平台的,可以处理所有问题:)啊,我不知道桌面——我的Java几乎停止于5。别忘了还有
桌面。打开(文件)
(有时以只读方式打开)和
桌面。打印(文件)
,用于稍微不同的操作。该错误报告指出。。“仅适用于Windows 2003,适用于winXP。”(强调我的)如果赢了。2003年是它的全部崩溃,我不会因为它而失眠。指定XP为最小值,并丢失一些客户端-无压力。在Ubuntu 14.04上不工作-但Desktop.open(文件)可以,这要感谢@AndrewThompson
Desktop.getDesktop().edit(File f);