行。简单的问题。也许不是那么简单的回答:
我有一个用Java下载的文件,我知道它是一个文本文件。有什么方法可以使用Java在默认文本编辑器中打开该文本文件?它必须适用于所有操作系统,否则我只需用记事本打开它。
:\我想如果没办法,我可以使用JOptionPane并显示文本文件的内容...
答案 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等价物。