を使用してCSVファイルから空のレコードをスキップし、は、Apache CommonsのCSV
a,b,c
//empty line
,,,
a,b,c
以下に示すような値がある場合、2つの有効なレコードがあります。 Apache Commons CSVパーサーを使用すると、空の行を持つレコードを簡単にスキップできます。しかし、レコードにnull値のみが含まれている場合、それをスキップする方法はありますか?
これを解決するために、私はString
equals()
を既に使用しています。ここにサンプル実装があります。
List<String[]> csvContentsList = new ArrayList<String[]>();
CSVFormat csvFormat = CSVFormat.DEFAULT.withNullString("");
CSVParser csvParser = new CSVParser(fileReader, csvFormat);
String[] nullRecordArray = { null, null, null};
String nullRecordString = Arrays.toString(nullRecordArray);
for (CSVRecord csvRecord : csvParser) {
try {
String values[] = { csvRecord.get(0),csvRecord.get(1),csvRecord.get(2) };
if (!nullRecordString.equals(Arrays.toString(values))) //lineA
csvContentsList.add(values);
} catch (Exception e) {
// exception handling
}
}
i「はリネア」としてマークされた行を使用しない場合は、この実装は
[a,b,c]
[null,null,null]
[a,b,c]
以下のようcsvContentsList
に3つのレコードを与え、これを行うための任意の作り付けの方法はありますか?または他のより良い方法?
'CSVFormat.Default'にはすでに' withIgnoreEmptyLines(true) 'が含まれています。 https://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html#DEFAULT。そして、質問では、私はすでに私は空の行をスキップすることができると述べている。 – Ram
@Ram Stream APIを使用してJava 8のサンプルを追加しました。 – SubOptimal