Java 使用openCSV使用新值更新行

Java 使用openCSV使用新值更新行,java,opencsv,Java,Opencsv,我需要使用openCSV实用程序用新值更新一行。例如,我有下面的CSV文件,我需要将包含TestdminUsername1和TestdminUsername2的行分别更新为TestdminUsername1,Fail,Errors find和TestdminUsername2,Fail,Errors find TestdminUsername1,Pass,No Error TestAdminUsername2,Pass,No Error TestAdminUsername3,Pass,No Er

我需要使用openCSV实用程序用新值更新一行。例如,我有下面的CSV文件,我需要将包含
TestdminUsername1
TestdminUsername2
的行分别更新为
TestdminUsername1,Fail,Errors find
TestdminUsername2,Fail,Errors find

TestdminUsername1,Pass,No Error
TestAdminUsername2,Pass,No Error
TestAdminUsername3,Pass,No Error
TestAdminUsername4,Pass,No Error
TestAdminUsername5,Pass,No Error
TestAdminUsername6,Pass,No Error
TestAdminUsername7,Pass,No Error
TestAdminUsername8,Pass,No Error
TestAdminUsername9,Pass,No Error
TestAdminUsername10,Pass,No Error
下面是我使用的一段代码:

import java.io.FileReader;
import java.io.FileWriter;
import java.util.Arrays;

import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;

public class AppendToCSVExample
{
    @SuppressWarnings("resource")
    public static void main(String[] args) throws Exception
   {
      String csv = "D:\\data2.csv";
      CSVWriter writer = new CSVWriter(new FileWriter(csv, true));
      String [] record1 = "TestdminUsername1,Pass,No Error".split(",");
      String [] record2 = "TestAdminUsername2,Pass,No Error".split(",");
      String [] record3 = "TestAdminUsername3,Pass,No Error".split(",");
      String [] record4 = "TestAdminUsername4,Pass,No Error".split(",");
      String [] record5 = "TestAdminUsername5,Pass,No Error".split(",");
      String [] record6 = "TestAdminUsername6,Pass,No Error".split(",");
      String [] record7 = "TestAdminUsername7,Pass,No Error".split(",");
      String [] record8 = "TestAdminUsername8,Pass,No Error".split(",");
      String [] record9 = "TestAdminUsername9,Pass,No Error".split(",");
      String [] record10 = "TestAdminUsername10,Pass,No Error".split(",");

      writer.writeNext(record1);
      writer.writeNext(record2);
      writer.writeNext(record3);
      writer.writeNext(record4);
      writer.writeNext(record5);
      writer.writeNext(record6);
      writer.writeNext(record7);
      writer.writeNext(record8);
      writer.writeNext(record9);
      writer.writeNext(record10);

      writer.close();

      CSVReader reader = new CSVReader(new FileReader("D:\\data1.csv"), ',' , '"' , 1);

      String[] nextLine;
      while ((nextLine = reader.readNext()) != null) {
          if (nextLine != null) {
         //Verifying the read data here
         System.out.println(Arrays.toString(nextLine));
         String[] parts = Arrays.toString(nextLine).split(",");
         if (parts[0].toString().contains("TestdminUsername1")) {
             String [] recordTest = "TestdminUsername1, Fail, Errors found".split(",");
              //Which method in openCSV needs to be used to update recordTest value in the File data2.csv
             ;
         }
      }
    }
  }
}

就我个人而言,我建议您打开另一个CSVWriter到一个新文件(data3.csv),并在读取data1时写入data3,更改需要修改的数据。这样,如果由于任何原因失败,您仍然保留原始文件。最后,如果您只需要一个文件,您可以删除data1并将data3.csv重命名为data1.csv

前面有一个问题,有人试图同时读取和写入同一个文件(),但我还是建议在出现错误时不要这样做