我正在尝试使用Java的Desktop / getDesktop()/ open()调用,使用系统的默认编辑器打开文本(简单ASCII)文件。我正在使用FileWriter / PrintWriter写入文件,刷新它,关闭它,但我得到一个异常抛出。
我在desktop.open(savefile)
中使用与FileWriter fw = new FileWriter(savefile)
电话中相同的文件对象。
我可以打开任何其他类型的文件,包括其他文本文件。
如果我在写完后立即暂停程序并用文本编辑器创建的文件替换输出的文件,那么在我的对话框中选择“打开”,它会完全打开...它似乎我的文本文件不是使用正确的标题或元信息创建,以便桌面知道如何处理它。
任何帮助或经验将不胜感激。在处理文本时是否有“官方”文件编写者使用?
答案 0 :(得分:3)
抱歉,无法通过此基本启动示例重现您的问题:
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
相反)或做得太晚(例如,当你在Desktop#open()
关闭时,在try
内调用finally
?