Java getDesktop() 打开命令

标签 java file desktop

我正在尝试使用 Java 的 Desktop/getDesktop()/open() 调用通过系统的默认编辑器打开一个文本(简单 ASCII)文件。我正在使用 FileWriter/PrintWriter 写入文件、刷新它、关闭它,但我得到了一个异常抛出。

  1. 我在 desktop.open(savefile) 中使用与在 FileWriter fw = new FileWriter(savefile) 调用中相同的文件对象。

  2. 我可以毫无问题地打开任何其他类型的文件,包括其他文本文件。

  3. 如果我在写入后立即暂停程序并将输出的文件替换为用文本编辑器创建的文件,然后在我的对话框中选择“打开”,它会完美打开......看起来我的文本文件不是' 使用正确的 header 或元信息创建,让 Desktop 知道如何处理它。

如有任何帮助或经验,我们将不胜感激。简单处理文本时是否有“官方”文件编写器可供使用?

最佳答案

抱歉,无法通过这个基本启动示例在此处重现您的问题:

File file = new File("/test.txt");
FileWriter writer = null;
try {
    writer = new FileWriter(file);
    writer.write("test");
} finally {
    if (writer != null) writer.close();
}
Desktop.getDesktop().open(file);

您的问题出在其他地方。也许您正在关闭错误的 Writer 句柄(您应该关闭“最外层”的编写器,例如,如果您将 FileWriter 包装在 BufferedWriter 中,你应该关闭 BufferedWriter )或者关闭它太晚了(例如在 try 中调用 Desktop#open() 而你正在关闭终于)?

关于Java getDesktop() 打开命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3249133/

相关文章:

c - 文件访问中的段错误

c# - 如何从 C# 中的文本文件中获取某些行?

windows - 在 Windows 中是否有任何文件夹可以替代 ProgramData?

java - Spring 和 SWT 可以一起用于 Java 桌面应用程序吗?

Java 8流findFirst抛出NPE,无法从流中过滤掉非空对象

java - 为什么 Java 会出现 "unreachable statement"编译器错误?

java - 中间带有通配符的 Servlet URL 模式

java - Java 中的大数

file - 如何禁用Maven Release插件检查本地修改?

c# - 如何使用电源管理功能 (PowerEnuimerate) 获取电源设置