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

时间:2011-06-08 01:05:40

标签: java download text-files

行。简单的问题。也许不是那么简单的回答:

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

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

3 个答案:

答案 0 :(得分:33)

你可以这样做:

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

This links to the tutorial article on java.awt.Desktop

  

Java™标准版第6版   缩小了表现之间的差距   和本机应用程序的集成   和Java应用程序。随着   新系统托盘功能,飞溅   屏幕支持和增强打印   对于JTable,Java SE版本6   提供Desktop API   (java.awt.Desktop)API,允许   Java应用程序与之交互   默认应用程序与   主机上的特定文件类型   平台。

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

不幸的是,known bug affecting some Windows platforms (XP and 2003)会导致JVM崩溃。像往常一样,写一次,到处调试。无论如何,对于Windows,有nice workaround仍然使用用户首选的应用程序:

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

答案 1 :(得分:6)

Desktop.getDesktop().edit(File f);

答案 2 :(得分:0)

当然,您可以在文本编辑器中进行配置,并使用Runtime.exec启动它。但我无法想出任何确定默认编辑器的方法,特别是在与系统无关的方式中。

也许你最好的选择是确定你所在的几个最流行的平台中的哪一个,然后找到一种方法来启动该平台上的默认编辑器。例如,在Window上你会得到默认的编辑器,如果你做“启动filename.txt”,我很确定有一个Linux等价物。