我正在尝试使用OpenCSV从一个CSV文件中读取。然后我想复制输入csv中的所有数据并将其输出到另一个csv文件,同时添加一个包含信息的新列。
public void run_streets_tsv( String tsvIn, String tsvOut) throws Exception
{
CSVReader reader = null;
CSVWriter writer = null;
try
{
reader = new CSVReader((new FileReader(tsvIn)));
writer = new CSVWriter(new FileWriter(tsvOut), '\t');
String element [] = null;
List<String[]> a = new ArrayList<String[]>();
while((element = reader.readNext()) != null){
for(int i = 0; i<element.length; i++){
a.add(i, element);
//a.add("JSON"); need to add this json element at the end of each column
}
}
writer.writeAll(a);
}
catch(Exception e)
{
throw e;
}
finally
{
reader.close();
writer.close();
}
}
我尝试的另一种方法是这样的(更改while循环,所有其他代码保持不变):
String element [] = null;
while((element = reader.readNext()) != null){
ArrayList list = new ArrayList(Arrays.asList(reader));
list.add(element);
list.add("JSON");
writer.writeNext(element);
}
这样可以正确打印所有行,但它只是复制。我想在其数据中添加额外的“JSON”列。
答案 0 :(得分:0)
以下“放大”element
- 数组,使您可以在新创建的最后一个索引中放置一些内容。然后保存该数组。
import java.util.Arrays;
String element[] = null;
while((element = reader.readNext()) != null){
element = Arrays.copyOf(element, element.length + 1);
element[element.length - 1] = "JSON";
writer.writeNext(element);
}
答案 1 :(得分:0)
好的,虽然我看到一些错误,但你很接近。
&#39; reader.readNext()&#39;从输入返回一行作为String数组,我们基本上需要为此输出添加一个元素。
while((element = reader.readNext()) != null) {
String[] output = getExpandedArray(element);
a.add(output);
}
您需要实现getExpandedArray,我将启动它。
private String[] getExpandedArray(String[] input) {
String[] output = null;
//Populate/create output from input, but with the array 1 bigger.
output[output.length -1] = "JSON";
return output;
}