Search code examples
csvsupercsv

Retrieve row number with supercsv


Is there a way with the super-csv library to find out the row number of the file that will be processed?

In other word, before i start to process my rows with a loop:

while ((obj = csvBeanReader.read(obj.getClass(),
csvModel.getNameMapping(), processors)) != null) { 

 //Do some logic here...

}

Can i retrieve with some library class the number of row contained into the csv file?


Solution

  • No, in order to find out how many rows are in your CSV file, you'll have to read the whole file with Super CSV (this is really the only way as CSV can span multiple lines). You could always do an initial pass over the file using CsvListReader (it doesn't do any bean mapping, so probably a bit more efficient) just to get the row count...

    As an aside (it doesn't help in this situation), you can get the current line/row number from the reader as you are reading using the getLineNumber() and getRowNumber() methods.