Description
Copy stream.
License
Open Source License
Parameter
Parameter | Description |
---|
in | the input stream |
out | the output stream |
Exception
Parameter | Description |
---|
IOException | for any IO error |
Declaration
public static void copyStream(final InputStream in, final OutputStream out) throws IOException
Method Source Code
//package com.java2s;
/*/*from w w w. ja v a 2s. com*/
* JBoss, Home of Professional Open Source.
* Copyright 2011, Red Hat, Inc., and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
import java.io.*;
public class Main {
/**
* Copy stream.
*
* @param in the input stream
* @param out the output stream
* @throws IOException for any IO error
*/
public static void copyStream(final InputStream in, final OutputStream out) throws IOException {
final byte[] bytes = new byte[8192];
int cnt;
while ((cnt = in.read(bytes)) != -1) {
out.write(bytes, 0, cnt);
}
}
/**
* Copy stream.
*
* @param in the input stream
* @param out the output stream
* @param offset how many input bytes should be skipped
* @throws IOException for any IO error
*/
public static void copyStream(final InputStream in, final OutputStream out, long offset) throws IOException {
skip(in, offset);
copyStream(in, out);
}
/**
* Copy stream.
*
* @param in the input stream
* @param out the output stream
* @param offset how many input bytes should be skipped
* @param length how many bytes should be copied
* @throws IOException for any IO error
*/
public static void copyStream(final InputStream in, final OutputStream out, long offset, long length)
throws IOException {
skip(in, offset);
copyStreamBounded(in, out, length);
}
public static void skip(InputStream stream, long count) throws IOException {
while (count > 0) {
count -= stream.skip(count);
}
}
public static void copyStreamBounded(InputStream in, OutputStream out, long length) throws IOException {
final byte[] bytes = new byte[8192];
long totalCount = 0;
while (totalCount < length) {
int len = (int) Math.min(bytes.length, length - totalCount);
int count = in.read(bytes, 0, len);
if (count == -1) {
throw new EOFException("Reached end of stream prematurely.");
}
out.write(bytes, 0, count);
totalCount += count;
}
}
}
Related
- copyStream(@Nonnull InputStream in, @Nonnull OutputStream out)
- copyStream(ByteArrayOutputStream source, ByteArrayOutputStream target)
- copyStream(final InputStream in, final OutputStream out)
- copyStream(final InputStream in, final OutputStream out, final int bufferSize)
- copyStream(final InputStream in, final OutputStream out, int iMax)
- copyStream(final InputStream input, final OutputStream output, long count)
- copyStream(final InputStream inputStream, final OutputStream out)