2013-12-21 2 views
0

Мне нужно обновить существующую запись в CSV-файле, используя код Java. Код, который я написал, приведен ниже. Я могу сопоставить запись, введенную пользователем с записью в файле, но не могу понять, как написать новую запись в том же месте.Как обновить существующую запись в файле csv

while ((row = reader.readNext()) != null)  
{  
    for (int i = 0; i < 1; i++)     
    {  
     System.out.print("row is "+row[i]); 

     // display CSV values             
     System.out.println("Cell Value: " + row[i]); 
     System.out.println("User Input: " + t1); 
     System.out.println("-------------"); 
     if(t1.equals(row[0])) 
     { 
      data.add(new String[] { t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, 
        t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, 
        t23, t24, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, 
        t36, t37, t38, t39 
      }); 
      flag=1; 
      writer.writeAll(data); 
      break; 
     }    
    } 
    rowno++; 
} 
+0

Что делать, если мне нужно продолжать делать это в течение n раз? – user2392588

+0

Возможный дубликат [обновление определенного csv-файла ячейки с помощью java] (http://stackoverflow.com/questions/4397907/updating-specific-cell-csv-file-using-java) –

ответ

0

Это то, что вам нужно сделать, чтобы записать новое значение в том же месте

  • два файла, вход один для чтения с и новой написать
  • В цикл, прочитайте строку из файла, и если она не соответствует, напишите в выходной файл
  • Если найденный из входного файла, напишите новую запись в выходном файле.
  • Завершить цикл через файл.
  • Закрыть потоки
  • Измените имя выходного файла на имя входного файла.
+1

должно быть «иметь два файла» – Keerthivasan

+0

Что, если мне нужно продолжать делать это в течение n раз? – user2392588

+0

Возможно, вы захотите изучить «RandomAccessFile». Это немного сложнее, но если вы научитесь использовать его, это может быть полезно для ситуаций, подобных этому –

Смежные вопросы