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

22 java download text-files

好.简单的问题.也许不是那么简单的回答:

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

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

Nat*_*hes 34

你可以这样做:

java.awt.Desktop.getDesktop().edit(file);
Run Code Online (Sandbox Code Playgroud)

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

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

它是跨平台的,但可能无处不在.您可以调用一种方法来检查Desktop 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);
}
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记还有`Desktop.open(File)`(有时打开只读)和`Desktop.print(File)`用于稍微不同的操作. (3认同)
  • 啊,不知道桌面 - 我的Java几乎停止了5. (2认同)

Sta*_*aro 6

Desktop.getDesktop().edit(File f);
Run Code Online (Sandbox Code Playgroud)