在GUI中使用相同的文件输出流

时间:2015-02-17 14:29:13

标签: javafx filestream

我需要继续使用文件输出流写入同一个文件,但是我正在使用来自不同窗口的javafx GUI来实现该程序。但是:

  • 由于你不能在没有初始化流的情况下访问全局变量,因此我必须将其设为最终,
  • 由于我必须在try catch中包装Stream,因此该变量不会被识别为初始化。

我之前正在使用像这样的方法

eW = outputFactory .createXMLEventWriter(new FileOutputStream(“File.txt”));

但是,当您再次编写相同的语句时,会显着覆盖同一文件。

基本上我的问题是,如何设置一个需要在try catch中包围的最终变量?

final file file = new File(“File.txt”);                 final FileOutputStream fileOS = new FileOutputStream(file);

2 个答案:

答案 0 :(得分:1)

  • 需要将变量初始化为final,以便从不同的线程或对象访问它。还有其他方法可以做到。
  • 您可以使用辅助类,甚至是辅助线程。第二个选项更适用于(最常见)您项目中有多个线程的情况。然后,您可以使用内部具有(几乎无限)while循环的普通try-catch块,它会检查写入队列并在需要时写入内容。
  • 如果你只使用1个线程并且只附加到文件,你可能想要这样做 - 打开要附加的文件,而不是覆盖。构造函数中有一个boolean标志。

答案 1 :(得分:0)

您可以查看FileOutputStream(File file, boolean append)构造函数,它允许您追加到文件的末尾而不是每次都覆盖。

我不知道你是如何实现它的,但是如果你从多个窗口写入同一个文件,那么拥有一个专门处理写入文件的辅助类可能会更容易。这将允许您将文件输出代码集中到一个位置,以便于调试和维护。