2

私は優れた Java プログラマーではないことを認めます。おそらく私の質問はかなりばかげています。既存の csv ファイルの別の場所に新しい列を追加する必要があります。スーパーcsvライブラリを使用しています。

私の入力ファイルはそのようなものです

1,2011-5-14 16:30:0.250,A
2,2011-5-14 16:30:21.500,B
3,2011-5-14 16:30:27.000,C
4,2011-5-14 16:30:29.750,B
5,2011-5-14 16:30:34.500,F

ご覧のとおり、ヘッダーはありません (または必要ありません)。そして、取得するために、column(2) に列を追加し、各行の最後に列を追加する必要があります。

1,1,2011-5-14 16:30:0.250,A,1
2,1,2011-5-14 16:30:21.500,B,1
3,1,2011-5-14 16:30:27.000,C,1
4,1,2011-5-14 16:30:29.750,B,1
5,1,2011-5-14 16:30:34.500,F,1

ライブラリのドキュメントから、元のファイルを直接変更することはできませんが (間違っているのでしょうか?)、それを読んで書き戻すことをお勧めします。CsvMapReaderCsvMapwriterを使用するのが良い選択だと思います。しかし、どうすれば既存の列の間に列を追加できますか? 既存の列の各フィールドを個別に読む必要があり、ライブラリのドキュメントで提案を見つけようとしましたが、その方法がわかりません。

4

1 に答える 1

3

クラスを使用してそれを行うことができますCsvListReaderCsvListWriter以下に、その方法の簡単な例を示します。

CsvListReader reader = new CsvListReader(new FileReader(inputCsv), CsvPreference.STANDARD_PREFERENCE);
CsvListWriter writer = new CsvListWriter(new FileWriter(outputCsv), CsvPreference.STANDARD_PREFERENCE);
List<String> columns;
while ((columns = reader.read()) != null) {
    System.out.println("Input: " + columns);
    // Add new columns
    columns.add(1, "Column_2");
    columns.add("Last_column");

    System.out.println("Output: " + columns);
    writer.write(columns);
}
reader.close();
writer.close();

これは簡単な例です。すべての例外をキャッチし、ストリームをfinallyブロックで閉じる必要があります。

于 2014-01-22T13:37:29.923 に答える