Sebb, Are you suggesting making copyInputStreamToFile(InputStream, File, boolean) private and adding a public method like copyToFile(InputStream, File) that calls it with false?
Gary On Wed, May 8, 2013 at 10:45 AM, sebb <seb...@gmail.com> wrote: > On 8 May 2013 15:36, <ggreg...@apache.org> wrote: > > Author: ggregory > > Date: Wed May 8 14:36:32 2013 > > New Revision: 1480300 > > > > URL: http://svn.apache.org/r1480300 > > Log: > > <action issue="IO-381" dev="ggregory" type="add"> > > Add FileUtils.copyInputStreamToFile API with option to leave the > source open. > > See copyInputStreamToFile(final InputStream source, final File > destination, boolean closeSource) > > </action> > > > > Modified: > > commons/proper/io/trunk/src/changes/changes.xml > > > commons/proper/io/trunk/src/main/java/org/apache/commons/io/FileUtils.java > > > > Modified: commons/proper/io/trunk/src/changes/changes.xml > > URL: > http://svn.apache.org/viewvc/commons/proper/io/trunk/src/changes/changes.xml?rev=1480300&r1=1480299&r2=1480300&view=diff > > > ============================================================================== > > --- commons/proper/io/trunk/src/changes/changes.xml (original) > > +++ commons/proper/io/trunk/src/changes/changes.xml Wed May 8 14:36:32 > 2013 > > @@ -47,7 +47,11 @@ The <action> type attribute can be add,u > > <body> > > <!-- The release date is the date RC is cut --> > > <release version="2.5" date="2013-??-??" description="New features > and bug fixes."> > > - <action issue="IO-380" dev="sebb" type="fix"> > > + <action issue="IO-381" dev="ggregory" type="add"> > > + Add FileUtils.copyInputStreamToFile API with option to leave > the source open. > > + See copyInputStreamToFile(final InputStream source, final File > destination, boolean closeSource) > > + </action> > > + <action issue="IO-380" dev="sebb" type="fix" due-to="claudio_ch"> > > FileUtils.copyInputStreamToFile should document it closes the > input source > > </action> > > <action issue="IO-279" dev="sebb" type="fix"> > > > > Modified: > commons/proper/io/trunk/src/main/java/org/apache/commons/io/FileUtils.java > > URL: > http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/FileUtils.java?rev=1480300&r1=1480299&r2=1480300&view=diff > > > ============================================================================== > > --- > commons/proper/io/trunk/src/main/java/org/apache/commons/io/FileUtils.java > (original) > > +++ > commons/proper/io/trunk/src/main/java/org/apache/commons/io/FileUtils.java > Wed May 8 14:36:32 2013 > > @@ -1459,8 +1459,7 @@ public class FileUtils { > > * @throws IOException if an IO error occurs during copying > > */ > > public static void copyURLToFile(final URL source, final File > destination) throws IOException { > > - final InputStream input = source.openStream(); > > - copyInputStreamToFile(input, destination); > > + copyInputStreamToFile(source.openStream(), destination); > > That really belonged in a separate commit. > > > } > > > > /** > > @@ -1488,8 +1487,7 @@ public class FileUtils { > > final URLConnection connection = source.openConnection(); > > connection.setConnectTimeout(connectionTimeout); > > connection.setReadTimeout(readTimeout); > > - final InputStream input = connection.getInputStream(); > > - copyInputStreamToFile(input, destination); > > + copyInputStreamToFile(connection.getInputStream(), destination); > > Ditto. > > > } > > > > /** > > @@ -1509,6 +1507,27 @@ public class FileUtils { > > * @since 2.0 > > */ > > public static void copyInputStreamToFile(final InputStream source, > final File destination) throws IOException { > > + copyInputStreamToFile(source, destination, true); > > + } > > + > > + /** > > + * Copies bytes from an {@link InputStream} <code>source</code> to > a file > > + * <code>destination</code>. The directories up to > <code>destination</code> > > + * will be created if they don't already exist. > <code>destination</code> > > + * will be overwritten if it already exists. > > + * > > + * @param source the <code>InputStream</code> to copy bytes from, > must not be {@code null}, will be closed > > That's wrong. > > > + * @param destination the non-directory <code>File</code> to write > bytes to > > + * (possibly overwriting), must not be {@code null} > > + * @param closeSource If true, closes the <code>source</code> > > + * @throws IOException if <code>destination</code> is a directory > > + * @throws IOException if <code>destination</code> cannot be written > > + * @throws IOException if <code>destination</code> needs creating > but can't be > > + * @throws IOException if an IO error occurs during copying > > + * @since 2.5 > > + */ > > + public static void copyInputStreamToFile(final InputStream source, > final File destination, boolean closeSource) > > + throws IOException { > > -1 > > I don't like this new method; as explained in IO-381 there is no > reason for anyone to use > > copyInputStreamToFile(source, destination, true); > > as that is the same as > > copyInputStreamToFile(source, destination); > > > try { > > final FileOutputStream output = > openOutputStream(destination); > > try { > > @@ -1518,7 +1537,9 @@ public class FileUtils { > > IOUtils.closeQuietly(output); > > } > > } finally { > > - IOUtils.closeQuietly(source); > > + if (closeSource) { > > + IOUtils.closeQuietly(source); > > + } > > } > > } > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > > -- 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