如何在 main() 方法之外初始化 FileWriter

How to initialize FileWriter outside of the main() method

我正在 Java 使用 Spark Streaming 框架编写程序(即使您不知道 Spark 是什么,您可能仍然知道我的问题的答案)。 我基本上是通过套接字接收字符串,每秒一个,并希望将它们保存在一个 txt 文件中(每个字符串由一个段落分隔。所以像这样:

FileWriter a = new Filewriter (path to file);
a.append(string s);
a.append('\n');
a.flush; 

Spark Streaming 的工作方式是将 main () 方法转换为一个大的 while 循环,所以为了让我将接收到的字符串保存在同一个文件中,我需要在main()(否则它会一直初始化并只保存它收到的最后一个字符串)。

问题是,由于 IOEXCEPTION,我必须这样做:

public static void writer () throws IOException 
{
   FileWriter a= new Filewriter  (path to file );
}

但是如果我在 main () 中调用 writer() 我会遇到和以前一样的问题(我一直在初始化 a)。

如何在main()外初始化一个,才不会出现这个问题?

非常感谢。

您可以将其声明为一个字段,但是您需要在构造函数中捕获异常。你可以这样做

private final PrintWriter writer = new PrintWriter(filename, true);

使用 PrintWriter 的好处是

  • 它在每行的末尾放置一个适当的换行符。
  • 可以启用自动刷新。

你可以用

调用它
writer.println(text);