Skip blank lines while reading .csv file using opencsv (java)
Solution 1:
You could check the length and the first element. If the line contains only a field separator then the lenght > 1. If the line contains a single space
character then the first element is not empty.
if (rowItemsArray.length == 1 && rowItemsArray[0].isEmpty()) {
continue;
}
Solution 2:
For opencsv 5.0 there is an API-option to read CSV lines directly into a Bean.
For people who prefer using the "CsvToBean" feature, the following solution is using the (sadly deprecated) #withFilter(..) method on CsvToBeanBuilder to skip blank lines in the Inputstream:
InputStream inputStream; // provided
List<MyBean> data = new CsvToBeanBuilder(new BufferedReader(new InputStreamReader(inputStream)))
.withType(MyBean.class)
.withFilter(new CsvToBeanFilter() {
/*
* This filter ignores empty lines from the input
*/
@Override
public boolean allowLine(String[] strings) {
for (String one : strings) {
if (one != null && one.length() > 0) {
return true;
}
}
return false;
}
}).build().parse();
Update: With opencsv Release 5.1 (dated 2/2/2020), CsvToBeanFilter got undeprecated as per feature request #120.