2015-02-24 5 views
-2

im, используя большой файл csv с большим набором данных около 17 атрибутов и приблизительно 40000 строк. я хочу написать i-ю позицию каждого значения строк в обратном порядке (1-я строка с «,» разделенное значение заменяется на 40000-й ит »,« отделяется ... 2-я замена на 39999 ... тоже все) (здесь я извлек 12-е значение = i). Как я могу это сделать, помогите мне. !!написать CSV-файл с модификацией

package demo; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import java.io.FileWriter; 
import java.io.*; 
/** 
* 
/** 
* 
* @author admin 
*/ 
public class Demo { 

    /** 
    * @param args the command line arguments 
    */ 
     public static void main(String[] args)throws IOException { 
     String filename = "bank-full.csv"; 
     File file = new File(filename); 
     BufferedWriter writer = null; 
     try { 
      writer = new BufferedWriter(new FileWriter("bank-full_updated.csv")); 
     } 
    catch (IOException e) { 
     } 

     try { 
      Scanner inputStream = new Scanner(file); 
      inputStream.next(); 
      double Tuple; 
      int count=0; 
      Tuple = 0; 


    while (inputStream.hasNext()) 
    { 
      String data = inputStream.next();   
      String[] values = data.split(";"); 
      double balance = Double.parseDouble(values[11]); 
      //balance=balance+1; 
      values[11] = String.valueOf(balance); 
    count=count+1; 

      // iterate through the values and build a string out of them 
      StringBuilder sb = new StringBuilder(); 
      // String newData = sb.toString(); 
      for (int i = 0; i < values.length; i++) { 
        sb.append(values[i]); 
        if (i < values.length - 1) { 
         sb.append(";"); 
        } 
      } 
      // get the new string 
      System.out.println(sb.toString()); 
      writer.write(sb.toString()+"\n"); 
       } 
      writer.close(); 
      inputStream.close(); 
     } catch (FileNotFoundException ex) { 
      Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex); 
     } 

    } 
} 
+0

Код, который вы опубликовали, только смутно связан с оператором проблемы. Просьба уточнить, нужно ли вам перевернуть строки файла (40 000 сменили с 1-м, 39,999-м swappend с 2-м, ...) или вам действительно нужно изменить строки (как указывает ваш код). Вы никогда не говорите, что значение должно увеличиваться, но ваш код увеличивает 12-й элемент (а не 11-й!) Подряд. – laune

+0

sry для этого ... теперь я сделал изменения. Фактически я хочу написать эти значения в обратном порядке. –

+0

Какие "значения"? Строки файла или поля каждой строки? (Если последнее: почему вы отправляете код, который не подходит даже близко?) Если вам нужно отменить строки: читать и хранить строки в «списке », а затем итерации от последнего к первому, как предлагает @OferLando. – laune

ответ

0

Не уверен, почему вы хотите, чтобы это сделать, но это звучит, как вам нужно прочитать файл в коллекции (например, ArrayList), добавляя каждую строку в качестве записи, а затем цикл по списку из конец к началу - и распечатать все обратно в (новый) файл ...