从CSV文件读取并使用java中的openCSV写入新的CSV文件

时间:2015-07-03 06:15:43

标签: java file opencsv

我正在编写一个读取CSV文件的程序,我修改了一些列。修改后我必须将其写入一个带有修改的新CSV文件。

我一直在阅读和修改,但当我把它写到一个新文件时,我只是得到一行。我来到这里。

帮我解决这个问题?

我正在使用openCSV,语言是Java。

我的代码:

CSVReader reader;
try 
{   
  File file=new File("/home/srinivas/Desktop/saicharan/Cardsmod.csv");
  if(file.createNewFile()){ }
  reader = new CSVReader(new FileReader(filename));
  String filewrite="/home/srinivas/Desktop/saicharan/Cardsmod.csv";   
  CSVWriter writer=new CSVWriter(new FileWriter(filewrite));
  String[] row;
  while((row = reader.readNext()) != null)
  {
    String str=new String();
    String str1=new String();
    for(int i=0;i<row.length;i++)
    {
      str1=str1+","+row[i];
      if(row[i].equals("Card Text Listen"))
      {
        String [] nextLine = reader.readNext();
        String [] nextLine1=reader.readNext();
        str=str+nextLine[i]+nextLine1[i];           
        c2.met(str);
      }
      if(i==11)
      {
        String[] rowwrite=str1.split(",");
        writer.writeNext(rowwrite);                     
      }
    }
  }
  writer.close();
}

谢谢。

1 个答案:

答案 0 :(得分:0)

我看到你读取和写入同一个文件,所以你应该将所有行存储到列表中,然后在读者完成后初始化编写器 EXP:

String[] header;
        String[] row;
        int index = 0;
        // processing the header;
        header = reader.readNext();
        for (int i = 0; i < header.length; i++) {
            if (header[i].equals("Card Text Listen")) {
                index = i;
                break;
            }
        }
        // processing data
        while ((row = reader.readNext()) != null) {
            for (int i = 0; i < row.length; i++) {
                if (index == i) {
                    row[i] = "new value";
                    break;
                }
            }
            writer.writeNext(row);
        }