在Java中将时间附加到现有CSV文件中的现有标头的省时方法?

我想通过在该行的末尾添加一个字符串来修改现有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记录,请选择其他方法:

  1. BufferedReader读取所有行
  2. 将所需内容添加到第一行
  3. BufferedWriter将所有内容写入新文件

太慢了吗?有没有更优雅的解决方案?谢谢!

iCMS 回答:在Java中将时间附加到现有CSV文件中的现有标头的省时方法?

文件系统不允许您在不重写插入/删除点之后的所有字节的情况下向文件中间插入字节或从文件中间删除字节。

由于文件系统不支持它,因此Java文件I / O API不支持它。

由于Java文件I / O API不支持它,因此OpenCvs API也不能。 (或者至少没有重写文件的内容。)

所以,答案是没有比读写文件的所有行更有效的方法。

注意:

  1. 虽然在技术上可以对文件进行就地重写,但创建新文件,对其进行写入并在写入完成后对其进行重命名更加安全(并且可能更有效率)。 / p>

  2. 一次读和写一行(使用BufferedReader / BufferedWriter)比同时将所有行读入内存然后全部写出要好。尤其是如果文件很大。

本文链接:https://www.f2er.com/1952610.html

大家都在问