How about something like:

on CSVFormat:
public PrintingOps print()

And the PrintingOps class would implement all the different printing
methods, combining the CSVFormat and a printer. The call would look like:

CSVFormat.EXCEL.print().contentsOf(file, StandardCharsets.UTF_8)

sebb <seb...@gmail.com> schrieb am Di., 14. Juni 2016 um 17:48 Uhr:

> On 14 June 2016 at 16:27, Gary Gregory <garydgreg...@gmail.com> wrote:
> > On Jun 14, 2016 5:19 AM, "James Carman" <ja...@carmanconsulting.com>
> wrote:
> >>
> >> Are Readers that hard to create?
> >
> > No, but remembering how to do this is a pain:
> >
> >      File out = ...
> >
> >      Charset charset = ...
> >
> >      CSVPrinter printer = new CSVPrinter(new OutputStreamWriter(new
> > FileOutputStream(out), charset), format);
> > Instead of:
> >
> > format.print(file, charset);
> >
> > We can roll these two APIs back out and document that the components only
> > provides low-level APIs, forget convenience APIs.
> >
> > We can also find a better home for these APIs... like where? On the
> printer
> > static side?
>
> Commons IO
>
> > Gary
> >
> > Itv
> >>
> >> On Tue, Jun 14, 2016 at 2:17 AM Gary Gregory <garydgreg...@gmail.com>
> > wrote:
> >>
> >> > On Mon, Jun 13, 2016 at 11:13 PM, Benedikt Ritter <brit...@apache.org
> >
> >> > wrote:
> >> >
> >> > > I don't like how we're evolving CSVFormat. It is becoming a dumping
> >> > ground
> >> > > for anything that may be useful or convenient. The more methods we
> > add,
> >> > the
> >> > > harder it becomes for users to find the right method for their use
> > case.
> >> > >
> >> >
> >> > Small is nice, I get that. But how would you do it differently so
> that I
> >> > can easily use Paths, Files, URI, and URLs...
> >> >
> >> > Gary
> >> >
> >> >
> >> > >
> >> > > Benedikt
> >> > >
> >> > > <ggreg...@apache.org> schrieb am Di., 14. Juni 2016 um 07:53 Uhr:
> >> > >
> >> > > > Author: ggregory
> >> > > > Date: Tue Jun 14 05:53:32 2016
> >> > > > New Revision: 1748347
> >> > > >
> >> > > > URL: http://svn.apache.org/viewvc?rev=1748347&view=rev
> >> > > > Log:
> >> > > > Add convenience API CSVFormat.print(File, Charset) (JIRA is down
> > ATM).
> >> > > >
> >> > > > Modified:
> >> > > >     commons/proper/csv/trunk/src/changes/changes.xml
> >> > > >
> >> > > >
> >> > >
> >> >
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java
> >> > > >
> >> > > >
> >> > >
> >> >
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
> >> > > >
> >> > > > Modified: commons/proper/csv/trunk/src/changes/changes.xml
> >> > > > URL:
> >> > > >
> >> > >
> >> >
> >
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/changes/changes.xml?rev=1748347&r1=1748346&r2=1748347&view=diff
> >> > > >
> >> > > >
> >> > >
> >> >
> >
> ==============================================================================
> >> > > > --- commons/proper/csv/trunk/src/changes/changes.xml (original)
> >> > > > +++ commons/proper/csv/trunk/src/changes/changes.xml Tue Jun 14
> >> > 05:53:32
> >> > > > 2016
> >> > > > @@ -40,6 +40,7 @@
> >> > > >    <body>
> >> > > >      <release version="1.5" date="2016-MM-DD" description="Bug fix
> >> > > > release">
> >> > > >        <action issue="CSV-187" type="update" dev="ggregory"
> >> > due-to="Gary
> >> > > > Gregory">Update platform requirement from Java 6 to 7.</action>
> >> > > > +      <action issue="CSV-???" type="add" dev="ggregory"
> > due-to="Gary
> >> > > > Gregory">Add convenience API CSVFormat.print(File,
> Charset)</action>
> >> > > >      </release>
> >> > > >      <release version="1.4" date="2016-05-28" description="Feature
> > and
> >> > > bug
> >> > > > fix release">
> >> > > >        <action issue="CSV-181" type="update" dev="ggregory"
> >> > due-to="Gary
> >> > > > Gregory">Make CSVPrinter.print(Object) GC-free.</action>
> >> > > >
> >> > > > Modified:
> >> > > >
> >> > >
> >> >
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java
> >> > > > URL:
> >> > > >
> >> > >
> >> >
> >
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java?rev=1748347&r1=1748346&r2=1748347&view=diff
> >> > > >
> >> > > >
> >> > >
> >> >
> >
> ==============================================================================
> >> > > > ---
> >> > > >
> >> > >
> >> >
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java
> >> > > > (original)
> >> > > > +++
> >> > > >
> >> > >
> >> >
> >
> commons/proper/csv/trunk/src/main/java/org/apache/commons/csv/CSVFormat.java
> >> > > > Tue Jun 14 05:53:32 2016
> >> > > > @@ -28,10 +28,14 @@ import static org.apache.commons.csv.Con
> >> > > >  import static org.apache.commons.csv.Constants.SP;
> >> > > >  import static org.apache.commons.csv.Constants.TAB;
> >> > > >
> >> > > > +import java.io.File;
> >> > > > +import java.io.FileOutputStream;
> >> > > >  import java.io.IOException;
> >> > > > +import java.io.OutputStreamWriter;
> >> > > >  import java.io.Reader;
> >> > > >  import java.io.Serializable;
> >> > > >  import java.io.StringWriter;
> >> > > > +import java.nio.charset.Charset;
> >> > > >  import java.sql.ResultSet;
> >> > > >  import java.sql.ResultSetMetaData;
> >> > > >  import java.sql.SQLException;
> >> > > > @@ -864,6 +868,27 @@ public final class CSVFormat implements
> >> > > >      }
> >> > > >
> >> > > >      /**
> >> > > > +     * Prints to the specified output.
> >> > > > +     *
> >> > > > +     * <p>
> >> > > > +     * See also {@link CSVPrinter}.
> >> > > > +     * </p>
> >> > > > +     *
> >> > > > +     * @param out
> >> > > > +     *            the output
> >> > > > +     * @param charset
> >> > > > +     *            A charset
> >> > > > +     * @return a printer to an output
> >> > > > +     * @throws IOException
> >> > > > +     *             thrown if the optional header cannot be
> printed.
> >> > > > +     * @since 1.5
> >> > > > +     */
> >> > > > +    public CSVPrinter print(final File out, Charset charset)
> throws
> >> > > > IOException {
> >> > > > +        // The FileWriter will be closed when close() is called.
> >> > > > +        return new CSVPrinter(new OutputStreamWriter(new
> >> > > > FileOutputStream(out), charset), this);
> >> > > > +    }
> >> > > > +
> >> > > > +    /**
> >> > > >       * Prints the {@code value} as the next value on the line to
> >> > {@code
> >> > > > out}. The value will be escaped or encapsulated
> >> > > >       * as needed. Useful when one wants to avoid creating
> > CSVPrinters.
> >> > > >       *
> >> > > >
> >> > > > Modified:
> >> > > >
> >> > >
> >> >
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
> >> > > > URL:
> >> > > >
> >> > >
> >> >
> >
> http://svn.apache.org/viewvc/commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java?rev=1748347&r1=1748346&r2=1748347&view=diff
> >> > > >
> >> > > >
> >> > >
> >> >
> >
> ==============================================================================
> >> > > > ---
> >> > > >
> >> > >
> >> >
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
> >> > > > (original)
> >> > > > +++
> >> > > >
> >> > >
> >> >
> >
> commons/proper/csv/trunk/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
> >> > > > Tue Jun 14 05:53:32 2016
> >> > > > @@ -22,9 +22,12 @@ import static org.junit.Assert.assertArr
> >> > > >  import static org.junit.Assert.assertEquals;
> >> > > >  import static org.junit.Assert.assertFalse;
> >> > > >
> >> > > > +import java.io.File;
> >> > > >  import java.io.IOException;
> >> > > >  import java.io.StringReader;
> >> > > >  import java.io.StringWriter;
> >> > > > +import java.nio.charset.Charset;
> >> > > > +import java.nio.charset.StandardCharsets;
> >> > > >  import java.sql.Connection;
> >> > > >  import java.sql.DriverManager;
> >> > > >  import java.sql.ResultSet;
> >> > > > @@ -38,6 +41,7 @@ import java.util.List;
> >> > > >  import java.util.Objects;
> >> > > >  import java.util.Random;
> >> > > >
> >> > > > +import org.apache.commons.io.FileUtils;
> >> > > >  import org.junit.Assert;
> >> > > >  import org.junit.Ignore;
> >> > > >  import org.junit.Test;
> >> > > > @@ -728,6 +732,24 @@ public class CSVPrinterTest {
> >> > > >      }
> >> > > >
> >> > > >      @Test
> >> > > > +    public void testPrintToFileWithDefaultCharset() throws
> >> > IOException {
> >> > > > +        File file = File.createTempFile(getClass().getName(),
> > ".csv");
> >> > > > +        try (final CSVPrinter printer =
> > CSVFormat.DEFAULT.print(file,
> >> > > > Charset.defaultCharset())) {
> >> > > > +            printer.printRecord("a", "b\\c");
> >> > > > +        }
> >> > > > +        assertEquals("a,b\\c" + recordSeparator,
> >> > > > FileUtils.readFileToString(file, Charset.defaultCharset()));
> >> > > > +    }
> >> > > > +
> >> > > > +    @Test
> >> > > > +    public void testPrintToFileWithCharsetUtf16Be() throws
> >> > IOException {
> >> > > > +        File file = File.createTempFile(getClass().getName(),
> > ".csv");
> >> > > > +        try (final CSVPrinter printer =
> > CSVFormat.DEFAULT.print(file,
> >> > > > StandardCharsets.UTF_16BE)) {
> >> > > > +            printer.printRecord("a", "b\\c");
> >> > > > +        }
> >> > > > +        assertEquals("a,b\\c" + recordSeparator,
> >> > > > FileUtils.readFileToString(file, StandardCharsets.UTF_16BE));
> >> > > > +    }
> >> > > > +
> >> > > > +    @Test
> >> > > >      public void testPrintCustomNullValues() throws IOException {
> >> > > >          final StringWriter sw = new StringWriter();
> >> > > >          try (final CSVPrinter printer = new CSVPrinter(sw,
> >> > > > CSVFormat.DEFAULT.withNullString("NULL"))) {
> >> > > >
> >> > > >
> >> > > >
> >> > >
> >> >
> >> >
> >> >
> >> > --
> >> > E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
> >> > Java Persistence with Hibernate, Second Edition
> >> > <http://www.manning.com/bauer3/>
> >> > JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> >> > Spring Batch in Action <http://www.manning.com/templier/>
> >> > Blog: http://garygregory.wordpress.com
> >> > Home: http://garygregory.com/
> >> > Tweet! http://twitter.com/GaryGregory
> >> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>

Reply via email to