2015-02-24 53 views
-2

寫入CSV文件即時通訊使用具有大型數據集的大型csv文件,大約17個屬性和大約40000行。我想以相反的順序寫第i行的每一行的位置(第1行第i行,「分隔值替換爲第40000th」,「分隔...第2行替換爲39999 ...同樣全部)(這裏我提取了第12個值= ith)。我怎麼能這樣做請幫助我。使用修改

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次交換,第2次第39,999次swappend,...)或者是否實際需要修改行(如代碼所示)。你永遠不會說應該增加一個值 - 但是你的代碼連續增加了第12項(不是第11項!)。 – laune 2015-02-24 15:07:45

+0

sry爲此...現在我已經做出了改變..實際上我想以相反的順序寫入這些值。 – 2015-02-24 15:25:01

+0

哪個「值」?文件的行或每行的字段? (如果後者:爲什麼你發佈的代碼甚至沒有接近?)如果你需要反轉這些行:讀取並存儲行在'List '中,然後從最後一次迭代到第一次,如@OferLando所示。 – laune 2015-02-24 16:00:03

回答

0

不知道爲什麼你要做到這一點,但它聽起來像是你需要閱讀文件到集合(如ArrayList中),將每行作爲一個記錄,然後遍歷從列表開始結束 - 並將所有內容打印回(新)文件中...