Uploaded image for project: 'Commons CSV'
  1. Commons CSV
  2. CSV-213

CSVParser#iterator()#hasNext() fails

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 1.4
    • Fix Version/s: None
    • Component/s: Parser
    • Labels:
      None
    • Environment:

      linux/osx

    • Flags:
      Important

      Description

      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?

      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"));
          }
      }
      

        Attachments

        1. 999751170.patch.csv
          0.0 kB
          Lukas Vasek

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              lukasvasek Lukas Vasek
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: