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

CSVFormat#withHeader doesn't work well with #printComment, add withHeaderComments(String...)

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 1.0
    • 1.1
    • Printer
    • None

    Description

      For some applications it might be useful to add a top comment to the CSV file being printed. However, this isn't possible with #120 implemented the way it is. Here's an example:

      public class Example {
        public static void main(final String[] args) throws IOException {
          final CSVPrinter csvPrinter = CSVFormat.TDF
              .withCommentMarker('#')
              .withHeader("foo", "bar")
              .print(System.out);
      
          csvPrinter.printComment("generated by yada v1.0");
          csvPrinter.printComment("foo  some description");
          csvPrinter.printComment("bar  more here");
          csvPrinter.printRecord(42, 24);
          csvPrinter.printRecord(24, 42);
        }
      }
      
      // Outputs:
      // foo	bar
      // # generated by yada v1.0
      // # foo  some description
      // # bar  more here
      // 42	24
      // 24	42
      

      Obviously, there's a way to "fix" this: output the header in the first call to `#printRecord`, but it just doesn't feel right. What to do you think?

      Attachments

        Activity

          People

            Unassigned Unassigned
            lebedev Sergei Lebedev
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: