I'm writing a program which reads a CSV file and I modify some columns.After modifying I have to write it to a new CSV file with modifications.
I have done till reading and modifying but when I'm writing it to a new file I'm just getting a single row.I'm struck here.
Help me overcome this?
I'm using openCSV and language is Java.
My code:
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();
}
Thank You.
I saw you read and write to same file, so you should store all the row to a list and then init the writer after reader completed 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);
}