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