OpenCSV - 在添加列时将一个 csv 文件复制到另一个
OpenCSV - copying one csv file to another while adding a column
我正在尝试使用 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" 列。
下面的"enlarges" element
-Array by one,使您可以在新创建的最后一个索引中放一些东西。然后保存那个数组。
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()' return 输入的一行作为字符串数组,我们基本上需要向其中添加一个元素以用于输出。
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;
}
我正在尝试使用 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" 列。
下面的"enlarges" element
-Array by one,使您可以在新创建的最后一个索引中放一些东西。然后保存那个数组。
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()' return 输入的一行作为字符串数组,我们基本上需要向其中添加一个元素以用于输出。
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;
}