编辑csv文件的最佳方法是什么?

时间:2010-06-24 14:17:54

标签: java csv

我有一个不完整的csv文件,需要准确更新,所以有这样的csv文件:

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

当然,文件要复杂得多,但在这种格式下,我想要做的就是插入new-word,new-word1, new-word3或七个到八个(或任何范围)之间的n个单词。我怎样才能做到这一点?

伪代码,代码或示例会很棒,我也不知道如何开始。

更新

也许我应该将其转换为数组或某种数据结构。然后在特定位置插入新项目,将其余内容右移,并为每次插入执行此操作。

我不知道是否正确的方法或如何开始编程

更新II:

也许在列表中的csv中读取,将列表拆分为两个列表,第一个以七个结尾。然后在第一个列表中添加n个单词并在结尾处加入两个列表?也不知道如何编程

3 个答案:

答案 0 :(得分: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());
}

帽子小贴士:@Mark Peters指出你无法更新Arrays.asList的结果

答案 1 :(得分: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行之后插入新词

答案 2 :(得分:0)

我会将其解析为一个集合,添加您的项目,然后将其渲染回csv。