我有一个不完整的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个单词并在结尾处加入两个列表?也不知道如何编程
答案 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。