Java InputStream Copy copyBytes(final InputStream in, final OutputStream out, final int buffSize, final boolean close)

Here you can find the source of copyBytes(final InputStream in, final OutputStream out, final int buffSize, final boolean close)

Description

Copies from one stream to another.

License

Apache License

Parameter

Parameter Description
in InputStream to read from
out OutputStream to write to
buffSize the size of the buffer
close whether or not close the InputStream and OutputStream at the end. The streams are closed in the finally clause.

Exception

Parameter Description
IOException thrown if an error occurred while writing to the output stream

Declaration

public static void copyBytes(final InputStream in, final OutputStream out, final int buffSize,
        final boolean close) throws IOException 

Method Source Code


//package com.java2s;
/*/* ww w.j  a v a2s.  c  o  m*/
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;

public class Main {
    /** The block size for byte operations in byte. */
    private static final int BLOCKSIZE = 4096;

    /**
     * Copies from one stream to another.
     * 
     * @param in
     *        InputStream to read from
     * @param out
     *        OutputStream to write to
     * @param buffSize
     *        the size of the buffer
     * @param close
     *        whether or not close the InputStream and OutputStream at the end. The streams are closed in the finally
     *        clause.
     * @throws IOException
     *         thrown if an error occurred while writing to the output stream
     */
    public static void copyBytes(final InputStream in, final OutputStream out, final int buffSize,
            final boolean close) throws IOException {

        @SuppressWarnings("resource")
        final PrintStream ps = out instanceof PrintStream ? (PrintStream) out : null;
        final byte[] buf = new byte[buffSize];
        try {
            int bytesRead = in.read(buf);
            while (bytesRead >= 0) {
                out.write(buf, 0, bytesRead);
                if ((ps != null) && ps.checkError()) {
                    throw new IOException("Unable to write to output stream.");
                }
                bytesRead = in.read(buf);
            }
        } finally {
            if (close) {
                out.close();
                in.close();
            }
        }
    }

    /**
     * Copies from one stream to another. <strong>closes the input and output
     * streams at the end</strong>.
     * 
     * @param in
     *        InputStream to read from
     * @param out
     *        OutputStream to write to
     * @throws IOException
     *         thrown if an I/O error occurs while copying
     */
    public static void copyBytes(final InputStream in, final OutputStream out) throws IOException {
        copyBytes(in, out, BLOCKSIZE, true);
    }

    /**
     * Copies from one stream to another.
     * 
     * @param in
     *        InputStream to read from
     * @param out
     *        OutputStream to write to
     * @param close
     *        whether or not close the InputStream and OutputStream at the
     *        end. The streams are closed in the finally clause.
     * @throws IOException
     *         thrown if an I/O error occurs while copying
     */
    public static void copyBytes(final InputStream in, final OutputStream out, final boolean close)
            throws IOException {
        copyBytes(in, out, BLOCKSIZE, close);
    }
}

Related

  1. copyByte(InputStream input, OutputStream output)
  2. copyBytes(DataInput in, DataOutput out, int length, byte[] buf)
  3. copyBytes(final byte[] bytes, final OutputStream outputStream)
  4. copyBytes(final InputStream is, final OutputStream os)
  5. copyBytes(InputStream in, OutputStream out)
  6. copyBytes(InputStream in, OutputStream out, int bufferSize, boolean close)
  7. copyBytes(InputStream in, OutputStream out, int buffSize)