【发布时间】:2021-09-28 08:22:14
【问题描述】:
我正在写入一个 csv 文件,然后再对其进行更新。但随着。我的更新代码,生成了一个新的相同文件。下面是我的代码,我想知道如何在不创建新文件的情况下进行更新。
public void updateFile(List<String> fileNames, String key, String value) throws IOException {
for (String file: fileNames) {
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);
CSVReader reader = new CSVReader(inputStreamReader);
String[] header = reader.readNext();
int columnNum = Arrays.asList(header).indexOf(key);
List<String[]> data = reader.readAll();
for (String[] row : data) {
row[columnNum] = value;
}
reader.close();
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(feedFile), StandardCharsets.UTF_8);
CSVWriter writer = new CSVWriter(outputStreamWriter);
writer.writeNext(header);
writer.writeAll(data);
writer.flush();
writer.close();
}
}
我的意思是新文件,现在创建了 2 个具有不同时间戳的文件副本。
【问题讨论】:
-
一般情况下不能,因为每行的字节数不固定。