2012-03-02 42 views
0

假設我有ArrayList中有如下內容寫的ArrayList內容爲TXT文件中的Java

public void add() { 

    obj.add(1); 
    obj.add(123456789); 
    obj.add(1.222); 
    obj.add(2.333); 

    obj.add(2); 
    obj.add(9876541); 
    obj.add(4.555); 
    obj.add(7.888); 



} 

我想如下

1,123456789,1.222,2.333 
2,9876541,4.555,7,888 

ArrayList中的內容複製到txt文件寫入我有以下的代碼內容寫入到文件

public void createCSV() { 

    try { 
     FileWriter fos = new FileWriter(
       "/home/data.txt"); 
     PrintWriter out = new PrintWriter(fos); 

     for (int i = 0; i < obj.size(); i++) { 

      out.write(String.valueOf(obj.get(i))); 
      out.write(","); 

     } 
     out.close(); 

    } catch (Exception e) { 

    } 
} 

public static void main(String[] args) { 

    JavaOp_CSV x = new JavaOp_CSV(); 
    x.add(); 
    x.createCSV(); 

} 

截至目前在內容文件是

1,123456789,1.222,2.333, 

任何人都可以提供一個邏輯來獲得上面提到的o/p? 在此先感謝

+1

嘿問題在哪裏? – Juvanis 2012-03-02 09:45:23

+1

問題是'如何擺脫最後一個逗號'或'如何在4個字段後插入輸入'或甚至其他東西? – Veger 2012-03-02 09:46:52

+1

我認爲你應該使用不同的結構。我想你的'1'和'2'是輸出中的「行」。 – dacwe 2012-03-02 09:47:00

回答

3

使用StringBuilder建立您將稍後寫入文件的字符串,並保留元素上的計數i

if i % 4 == 0 - 增加一個換行符
else:增加一個','

注意:您需要避免增加新的生產線的第一個元素,也可能是最後一次,以及如果total_num_elements % 4 != 0

它可以方便地史稿後處理用做StringBuilder.deleteCharAt()

2

您也可以嘗試組織.apache.commons.lang.StringUtils,它有一個連接方法可以滿足你的需要。

StringUtils.join(obj.toArray(), ','); 

或者你只能確定它是否是第一個元素或最後一個元素。