[
https://issues.apache.org/jira/browse/CSV-274?focusedWorklogId=814463&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-814463
]
ASF GitHub Bot logged work on CSV-274:
--------------------------------------
Author: ASF GitHub Bot
Created on: 06/Oct/22 18:02
Start Date: 06/Oct/22 18:02
Worklog Time Spent: 10m
Work Description: garydgregory commented on code in PR #270:
URL: https://github.com/apache/commons-csv/pull/270#discussion_r989341311
##########
src/main/java/org/apache/commons/csv/CSVParser.java:
##########
@@ -799,7 +814,9 @@ CSVRecord nextRecord() throws IOException {
/**
* Returns a sequential {@code Stream} with this collection as its source.
- *
+ * <p>
+ * If the parser is closed, the stream will not produce any more values.
+ * See the comments in {@link iterator()}.
Review Comment:
> Done. I was basing it on
https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html#format
which doesn't close the tags (I assume javadocs inherited the 'tag omission'
behavior from html).
In general, you can look at the rest of the file to get an idea of what
style to follow.
Issue Time Tracking
-------------------
Worklog Id: (was: 814463)
Time Spent: 40m (was: 0.5h)
> CSVParser.iterator() does not iterate 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
> Priority: Major
> Time Spent: 40m
> Remaining Estimate: 0h
>
> 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 iterator
> 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}
> and:
> {code:java}
> public Stream<CSVRecord> convertFileToMaps(Path path) throws IOException {
> try (CSVParser parser = CSVParser.parse(path,
> Charset.defaultCharset(), CSVFormat.RFC4180
> .withFirstRecordAsHeader())) {
> return StreamSupport.stream(parser.spliterator(), 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.20.10#820010)