【发布时间】:2021-07-01 23:55:58
【问题描述】:
我正在处理一些数据,然后将其保存在 stringbuilder 中以最终写入 csv。
目前,我正在使用作为处理一些 idData 数组的结果获得的 println 一次编写整个 stringBuilder。但是我想分批写,所以也许假设ids的数组数据长度= 200,我想一次写50个id的数据。
我该怎么做?
Existing code of writing the entire string builder result
class A {
private StringBuilder sb;
public void appendBody(String[] idData) {
for(String id: idData) {
Data data = getData(id);
processData(data);
}
writeToCsv();
}
public void processData() {
.. processing that involves populating private property string builder
// adding some sample data here
this.sb.append("Name,Phone,Email\n");
this.sb.append("Glen,1234,glen@abcd.com\n");
this.sb.append("John,5678,john@efgh.com");
// end populating string builder
}
public String writeToCsv() throws DataNotFoundException {
String filename = "outputFileNamePath"; // sample filename, modified to be pasted here
PrintWriter writer;
try {
writer = new PrintWriter(new File(filename));
} catch (FileNotFoundException e) {
writeLog("ERROR", e.getMessage);
throw new Exception("Error while creating output file");
}
writer.println(this.sb.toString());
writer.close();
return filename;
}
}
一些建议和提示会有所帮助。
P.S:请不要评论被重新抛出的日志消息或异常或变量的名称或任何与我的问题无关的细节,因为它们已被修改为将其添加到此处并请原谅我的任何错误提前!
【问题讨论】:
-
` writeToCsv();` 不是
public String writeToCsv(FeedFileName destFile)- 你也有writeToCsv()在一个循环中,你似乎每次都覆盖整个文件(StringBuilder只是被附加到. 编写真正的代码来显示真正的问题是什么。 -
@ScaryWombat 抱歉,它应该不在循环中。我编辑了它。感谢您指出。
-
如果您使用 FileWriter 对象,您可以以追加模式打开文件。
标签: java csv printwriter chunks