Java OpenCSV-在添加列时将一个csv文件复制到另一个csv文件
我正在尝试使用OpenCSV读取一个CSV文件。然后,我想复制输入csv中的所有数据,并将其输出到另一个csv文件,同时添加一个包含信息的新列Java OpenCSV-在添加列时将一个csv文件复制到另一个csv文件,java,json,csv,opencsv,Java,Json,Csv,Opencsv,我正在尝试使用OpenCSV读取一个CSV文件。然后,我想复制输入csv中的所有数据,并将其输出到另一个csv文件,同时添加一个包含信息的新列 public void run_streets_tsv( String tsvIn, String tsvOut) throws Exception { CSVReader reader = null; CSVWriter writer = null; try { reader = new CSVR
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();
}
}
这可以正确打印所有行,但它只是复制。我想添加额外的“JSON”列及其数据 以下内容将元素
-数组“放大”一倍,使您能够在新创建的最后一个索引中放入一些内容。然后保存该数组
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);
}
好的,虽然我看到了一些错误,但你们很接近 'reader.readNext()'以字符串数组的形式从输入返回一行,我们基本上需要为输出添加一个元素
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;
}
System.arrayCopy(…)
可以使用一行来填充输出
。是的,你可以,尽管问题来自初学者,我建议他们自己编写,以帮助他们了解java。这一行一行读对吗?我如何编辑它,使其逐列读取?@Felix Yes。为了逐列读取,您必须读取整个文件,因为csv
逐行存储数据。要读取整个文件,请使用reader.readAll()
。如果无法将整个文件存储在RAM中,则可以创建一个(例如,ArrayList
),然后读取一行,将所需列添加到列表中,重复。但是,使用.readAll()不起作用,因为.readAll()需要一个列表@Poohl@Felix.readAll()
不需要列表,它会返回一个列表。(ArrayList content=reader.readAll()
)。还是我把你的问题搞错了?
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;
}