我正在使用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()外部初始化,所以我没有这个问题?
非常感谢你。
答案 0 :(得分:1)
您可以将其声明为字段,但是您需要在构造函数中捕获异常。你可以这样做
private final PrintWriter writer = new PrintWriter(filename, true);
使用PrintWriter的优势在于
您可以使用
进行调用writer.println(text);