Java:打开已经打开但已更新的文件

时间:2014-09-09 08:57:13

标签: java file

按下按钮时,我使用java写入文本文件。

我正在使用以下方式写入文件:

FileWriter write = null;
    try {
        write = new FileWriter(fileLocation, false);
        PrintWriter print = new PrintWriter(write);
        print.printf("%s" + "%n", text);
        print.close();
    } catch (IOException ex) {
        Logger.getLogger(DataEntry.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        try {
            write.close();
        } catch (IOException ex) {
            Logger.getLogger(DataEntry.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

一旦写入,我使用以下命令打开文本文件:

Desktop.getDesktop().open(new File(fileLocation));

如果按下按钮时关闭文本文件,则此功能正常。但是,如果文件已打开,则文本文件会更改,但当java'打开'文件时,不会显示更改。相反,它将已打开的文本文件放在前面,但不更新内容。

有没有办法显示新信息?

2 个答案:

答案 0 :(得分:1)

我不认为你能直接解决这个问题。

Java桌面类与本机操作系统没有足够的集成能够确定文件是否已经打开,或者关闭本机应用程序显示它的任何内容。

你不会说你正在写什么样的文件,但也许你可以编写Java代码来在你的程序中显示它,而不是仅仅要求本机操作系统打开"打开"它。然后你就拥有了你需要的控制权。

答案 1 :(得分:1)

您所看到的主要是预期的行为 - 显示文件留给系统默认文本编辑器(最有可能是记事本)。它对文件启动后对文件所做的任何更改都毫无头绪,也无法改变。

可能的解决方案:

  • 使用更新的默认文本编辑器(如Notepad ++)强制实施(如果可行)
  • 以某种方式杀死默认编辑器进程(如果你愿意,可以更优雅地关闭它),以确保再次打开文本文件。
  • 编写您自己的文本显示,而不是依赖桌面