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)