Michele Mariotti created IO-554: ----------------------------------- Summary: copyToFile(InputStream source, File destination) closes input stream Key: IO-554 URL: https://issues.apache.org/jira/browse/IO-554 Project: Commons IO Issue Type: Bug Components: Streams/Writers Affects Versions: 2.6 Reporter: Michele Mariotti Priority: Blocker Fix For: 2.7
In 2.6 this method is closing the input stream, while the javadoc states the opposite. The correct behavior is to leave the stream open, as stated in the javadoc. I assigned a high priority because this incorrect behavior breaks existing code, especially when used in combination with ZipInputStream. {code:java} /** * 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. * The {@code source} stream is left open, e.g. for use with {@link java.util.zip.ZipInputStream ZipInputStream}. * See {@link #copyInputStreamToFile(InputStream, File)} for a method that closes the input stream. * * @param source the <code>InputStream</code> to copy bytes from, must not be {@code null} * @param destination the non-directory <code>File</code> to write bytes to * (possibly overwriting), must not be {@code null} * @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 copyToFile(final InputStream source, final File destination) throws IOException { try (InputStream in = source; OutputStream out = openOutputStream(destination)) { IOUtils.copy(in, out); } } {code} instead it should be: {code:java} public static void copyToFile(final InputStream source, final File destination) throws IOException { try (OutputStream out = openOutputStream(destination)) { IOUtils.copy(source, out); } }{code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)