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

时间:2016-03-28 13:00:22

标签: java apache-spark streaming

我正在使用Spark Streaming框架在Java中编写程序(即使你不知道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(),我会遇到和以前一样的问题(我一直在初始化)。

如何在main()外部初始化,所以我没有这个问题?

非常感谢你。

1 个答案:

答案 0 :(得分:1)

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

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

使用PrintWriter的优势在于

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

您可以使用

进行调用
writer.println(text);