2010-06-24 95 views
8

我有一個需要準確地更新一個不完整的CSV文件的最好方法,所以有這樣的csv文件:什麼是編輯csv文件

one,two,three,four,five,six,seven,eight,nine,ten //This is a line(String) 

當然該文件要複雜得多,但在這格式,這裏是我想要做的插入new-word,new-word1, new-word3或者7到8(或任何範圍)之間的n個單詞。我怎樣才能做到這一點?

僞代碼,代碼或例子會很好,我不知道如何開始。

UPDATE:

也許我應該將此轉換爲數組或某種數據結構中。然後在特定位置插入新項目,將其餘內容正確移動併爲每個插入操作。

我不知道,如果是去正確的方式或如何開始編程它

UPDATE II:

也許在CSV列表讀取,拆分列表分爲兩個列表,第一個以七爲結尾。然後添加n個單詞到第一個列表並在最後加入兩個列表?也不知道如何編程這個

回答

5

看看OpenCSV

更新:下面是一些(勉強)僞給的你將如何使用OpenCSV這個總體思路:

CSVReader reader = new CSVReader(new FileReader("old.csv")); 
CSVWriter writer = new CSVWriter(new FileWriter("new.csv")); 
String [] nextLine; 
while ((nextLine = reader.readNext()) != null) { 
    List<String> lineAsList = new ArrayList<String>(Arrays.asList(nextLine)); 
    // Add stuff using linesAsList.add(index, newValue) as many times as you need. 
    writer.writeNext(lineAsList.toArray()); 
} 

帽尖:@馬克彼得斯誰指出,你不能更新結果Arrays.asList

+0

@Hank同性戀我不是不明白你已發佈的信息或本寫你現有的條目到一個新的文件,我沒有看到任何地方在這裏我怎麼能寫 – 2010-06-24 14:30:10

+0

OpenCSV會正確地轉義雙引號? – 2010-06-24 14:47:42

+0

@Joe Phillips我想這取決於你的定義是否正確,因爲沒有規範。這是一個簡單的解釋;我建議你嘗試一下並閱讀[主頁上的FAQ](http://opencsv.sourceforge.net/)。 – 2010-06-24 14:56:01

0

我會解析它到一個集合中,添加你的項目,然後將其渲染回csv。

+0

是的,你會如何插入n項到任何集合例如:兩個項目之間的數組列表已經在 – 2010-06-24 14:33:19

+1

之間你會發現你想要插入的對象,得到它的索引,然後在那裏插入三件事? – 2010-06-24 14:35:46

+0

對於ArrayList,使用'add(int,object)'方法。 – 2010-06-24 14:37:06

1

這個僞像代碼可能幫助:

List values = Arrays.asList(line.split(",\s*")); 
List newWords = Arrays.aList(newWordsLine.split(",\s*")); 

values.addAll(7,newWords); 

StringBuffer buf = new StringBuffer(values.get(0)); 
for(v : values.subList(1,values.size()) { 
    buf.append(",",v); 
} 
return buf.toString(); 

這將上線的第7項後插入newWords