OpenCSVを使用して1つのCSVファイルから読み込もうとしています。次に、入力csvからすべてのデータをコピーし、別のcsvファイルに出力して、新しい列に情報を追加したいとします。OpenCSV - 列を追加中に1つのcsvファイルを別のファイルにコピーする
String element [] = null;
while((element = reader.readNext()) != null){
ArrayList list = new ArrayList(Arrays.asList(reader));
list.add(element);
list.add("JSON");
writer.writeNext(element);
}
これは正しくすべての行を印刷しないが、それはただのコピー:
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ループを変え、他のすべてのコードが同じまま)のようなものです。その余分な "JSON"列にデータを追加したいと思います。
これは行単位で正しく読み取りますか?これを編集して列単位で読み込む方法はありますか? – Felix
@Felixはい。 'csv'は行単位でデータを格納するので、列単位で読み込むには、ファイル全体を読む必要があります。ファイル全体を読むには 'reader.readAll()'を使います。ファイル全体をRAMに保存できない場合は、たとえば次のように作成できます。 'ArrayList'、1行を読み込み、リストに必要な列を追加して繰り返します。 –
Poohl
.readALL()はリストを必要とするので、.readAll()を使用することはできません。 @Poohl – Felix