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

2022-09-01 18:47:55

好的,简单的问题。也许不是那么简单的答案, 虽然:

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

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


答案 1

您可以使用以下命令执行此操作:

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

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

Java™ 标准版版本 6 缩小了本机应用程序和 Java 应用程序的性能和集成之间的差距。除了新的系统托盘功能、初始屏幕支持和增强的 JTables 打印功能外,Java SE 版本 6 还提供了桌面 API (java.awt.Desktop) API,它允许 Java 应用程序与主机平台上与特定文件类型关联的默认应用程序进行交互。

它是跨平台的,但可能并非在所有地方都受支持。您可以调用一种方法来检查桌面 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);
}

答案 2
Desktop.getDesktop().edit(File f);