【发布时间】:2021-09-22 00:41:42
【问题描述】:
我正在处理如下文件并关闭它。稍后,我进行更多处理并获得一些我想附加到之前生成的 CSV 中所有行的 ID。所以所有行都将具有相同的值。
我创建数据并将数据附加到 csv 的初始代码:
private StringBuilder stringBuilder = new StringBuilder();
public void writeToFile(String[] tIds, PrintWriter printWriter) throws DataNotFoundException {
int rowCount = 0;
for(String id: tIds) {
Data data = util.getData(id);
csvHelper.prepareFileData(data, this.stringBuilder);
rowCount++;
if (rowCount == CHUNK_SIZE) {
printWriter.println(this.stringBuilder.toString());
this.stringBuilder = new StringBuilder();
rowCount = 0;
}
}
printWriter.close();
}
现在进一步处理返回一些processedID,我想将其作为新列附加到所有行。
一个选项是这样的:
public void appendAgain(String processedId) {
BufferedReader br = new BufferedReader(new FileReader(feedFile));
String output = "";
String line;
while ((line = br.readLine()) != null) {
output += line.replace(",", "," + alertId + ",");
}
FileWriter fw = new FileWriter(feedFile, false); //false to replace file contents, your code has true for append to file contents
fw.write(output);
fw.flush();
fw.close();
}
public void prepareFileForData(Data data, StringBuilder sb) {
// map values from data to sb
sb.append(data.getId());
sb.append(",");
sb.append(data.getName());
.. and so on
}
请评论更好的方法或对当前方法的任何建议。谢谢!
【问题讨论】:
-
这个问题属于codereview.stackexchange.com,不是SO。
标签: java csv bufferedreader filewriter printwriter