【发布时间】:2020-11-01 15:08:34
【问题描述】:
我想修改现有 csv 文件的第一行或标题,方法是在该行的末尾添加一个字符串。
我已经尝试使用 BufferedWriter 来执行此操作,但我只能将其附加到文件末尾。
我的工作代码:
public static void writeStringtoCsvFile(String filePath, String input) throws IOException {
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(filePath, true)));
out.append(input);
out.close();
}
似乎 OpenCsv 也没有附加到现有文件的可用方法。我需要处理的文件大小至少为 160mb 或 1+mil 记录,是否可以使用替代方法:
- BufferedReader 读取所有行
- 在第一行添加任何需要的内容
- BufferedWriter 将所有内容写入新文件
太慢了?有没有更优雅的解决方案?谢谢!
【问题讨论】:
-
鉴于您不想附加到文件,但要在整个过程中更改其内容,因此无法重写所有内容。
-
如果您控制文件的原始创建,那么您可能能够在某些情况下优化此过程。如果您可以在创建文件时在第一行添加一些额外的字节,可能是尾随空格,那么当需要更新它时,您可以使用
RandomAccessFile并覆盖一些额外的字节。
标签: java csv file bufferedreader bufferedwriter