David Guiney created CSV-274:
--------------------------------

             Summary: CSVParser.iterator() does not itterate over result set as 
expected.
                 Key: CSV-274
                 URL: https://issues.apache.org/jira/browse/CSV-274
             Project: Commons CSV
          Issue Type: Bug
          Components: Parser
    Affects Versions: 1.8
            Reporter: David Guiney


To return a stream of `CSVRecords` in a Spliterators, I need to call 
`CSVParser.getRecords().iterator()`. I worry that the `getRecords()` will load 
the records from the parser into memory, before creating the itterator which 
can be a problem with large CSV files.

My code: 
{code:java}
    public Stream<CSVRecord> convertFileToMaps(Path path) throws IOException {
        try (CSVParser parser = CSVParser.parse(path, Charset.defaultCharset(), 
CSVFormat.RFC4180
            .withFirstRecordAsHeader())) {
            return 
StreamSupport.stream(Spliterators.spliteratorUnknownSize(parser.iterator(), 0), 
false);
        }
}
{code}
When I collect the results of my method, it gives me
{code:java}
[]
{code}
If I replace `parser.iterator()` with `parser.getRecords().iterator()` then I 
get the desired results. Is the iterator not meant to be an iterator of the 
list of `CSVRecord`.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to