Lukas Vasek created CSV-213:
-------------------------------

             Summary: CSVParser#terator()#hasNext() fails
                 Key: CSV-213
                 URL: https://issues.apache.org/jira/browse/CSV-213
             Project: Commons CSV
          Issue Type: Bug
          Components: Parser
    Affects Versions: 1.4
         Environment: linux/osx
            Reporter: Lukas Vasek
            Priority: Blocker


Hello,
with class sample below and attached fail the program fails. Problem is that 
iterator wrongly computes the records. If hasNext is true then next record 
should be fetched.
+ wouldn't it be better to provide currentRecord also?

{code:java}
public class Test {

    private static final CSVFormat csvFormat =
            CSVFormat.DEFAULT
                    .withDelimiter(';')
                    .withFirstRecordAsHeader()
                    .withRecordSeparator('\n')
                    .withQuoteMode(QuoteMode.ALL);


    private static Optional<String[]> createEndChannel(File csvFile) {
        try (Reader reader = new InputStreamReader(new 
FileInputStream(csvFile), StandardCharsets.UTF_8);
             CSVParser parser = new CSVParser(reader, csvFormat)) {
            if (parser.iterator().hasNext()) {
                System.out.println(parser.getCurrentLineNumber());
                System.out.println(parser.getRecordNumber());
                // get only first record we don't need other's
                CSVRecord firstRecord = parser.iterator().next(); // this fails

                return Optional.of(null);
            }
        } catch (IOException e) {
            throw new RuntimeException("Error while adding end channel to csv", 
e);
        }

        return Optional.empty();
    }


    public static void main(String[] args) {
        createEndChannel(new File("/tmp/999751170.patch.csv"));
        //createEndChannel(new File("/tmp/129441.csv"));
    }
}
{code}




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to