org.hibernate.engine.jdbc.StreamUtils.java Source code

Java tutorial

Introduction

Here is the source code for org.hibernate.engine.jdbc.StreamUtils.java

Source

/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 */
package org.hibernate.engine.jdbc;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;

/**
 * Stream copying utilities
 *
 * @author Steve Ebersole
 */
public class StreamUtils {
    /**
     * Default size to use for reading buffers.
     */
    public static final int DEFAULT_CHUNK_SIZE = 1024;

    /**
     * Copy the inputStream to the outputStream.  Uses a buffer of the default size ({@link #DEFAULT_CHUNK_SIZE}).
     *
     * @param inputStream The input stream to read
     * @param outputStream The output stream to write to
     *
     * @return The number of bytes read
     *
     * @throws IOException If a problem occurred accessing either stream
     */
    public static long copy(InputStream inputStream, OutputStream outputStream) throws IOException {
        return copy(inputStream, outputStream, DEFAULT_CHUNK_SIZE);
    }

    /**
     * Copy the inputStream to the outputStream using a buffer of the specified size
     *
     * @param inputStream The input stream to read
     * @param outputStream The output stream to write to
     * @param bufferSize The size of the buffer to use for reading
     *
     * @return The number of bytes read
     *
     * @throws IOException If a problem occurred accessing either stream
     */
    public static long copy(InputStream inputStream, OutputStream outputStream, int bufferSize) throws IOException {
        final byte[] buffer = new byte[bufferSize];
        long count = 0;
        int n;
        while (-1 != (n = inputStream.read(buffer))) {
            outputStream.write(buffer, 0, n);
            count += n;
        }
        return count;
    }

    /**
     * Copy the reader to the writer.  Uses a buffer of the default size ({@link #DEFAULT_CHUNK_SIZE}).
     *
     * @param reader The reader to read from
     * @param writer The writer to write to
     *
     * @return The number of bytes read
     *
     * @throws IOException If a problem occurred accessing reader or writer
     */
    public static long copy(Reader reader, Writer writer) throws IOException {
        return copy(reader, writer, DEFAULT_CHUNK_SIZE);
    }

    /**
     * Copy the reader to the writer using a buffer of the specified size
     *
     * @param reader The reader to read from
     * @param writer The writer to write to
     * @param bufferSize The size of the buffer to use for reading
     *
     * @return The number of bytes read
     *
     * @throws IOException If a problem occurred accessing either stream
     */
    public static long copy(Reader reader, Writer writer, int bufferSize) throws IOException {
        final char[] buffer = new char[bufferSize];
        long count = 0;
        int n;
        while (-1 != (n = reader.read(buffer))) {
            writer.write(buffer, 0, n);
            count += n;
        }
        return count;
    }

    private StreamUtils() {
    }
}