Description
Copy input stream to output stream and close them both
License
Open Source License
Parameter
Parameter | Description |
---|
is | input stream |
os | output stream |
Exception
Parameter | Description |
---|
IOException | for any error |
Declaration
public static void copyStreamAndClose(InputStream is, OutputStream os) throws IOException
Method Source Code
//package com.java2s;
/*//w ww. j av a 2 s. co m
* JBoss, Home of Professional Open Source.
* Copyright 2016, 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.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.ZipFile;
public class Main {
private static final int DEFAULT_BUFFER_SIZE = 65536;
/**
* Copy input stream to output stream and close them both
*
* @param is input stream
* @param os output stream
*
* @throws IOException for any error
*/
public static void copyStreamAndClose(InputStream is, OutputStream os) throws IOException {
try {
copyStream(is, os, DEFAULT_BUFFER_SIZE);
// throw an exception if the close fails since some data might be lost
is.close();
os.close();
} finally {
// ...but still guarantee that they're both closed
safeClose(is);
safeClose(os);
}
}
/**
* Copy input stream to output stream without closing streams. Flushes output stream when done.
*
* @param is input stream
* @param os output stream
*
* @throws IOException for any error
*/
public static void copyStream(InputStream is, OutputStream os) throws IOException {
copyStream(is, os, DEFAULT_BUFFER_SIZE);
}
/**
* Copy input stream to output stream without closing streams. Flushes output stream when done.
*
* @param is input stream
* @param os output stream
* @param bufferSize the buffer size to use
*
* @throws IOException for any error
*/
private static void copyStream(InputStream is, OutputStream os, int bufferSize) throws IOException {
assert is != null : "input stream is null";
assert os != null : "output stream is null";
byte[] buff = new byte[bufferSize];
int rc;
while ((rc = is.read(buff)) != -1)
os.write(buff, 0, rc);
os.flush();
}
public static void safeClose(final Closeable closeable) {
if (closeable != null) {
try {
closeable.close();
} catch (IOException e) {
//
}
}
}
public static void safeClose(final ZipFile closeable) {
if (closeable != null) {
try {
closeable.close();
} catch (IOException e) {
//
}
}
}
}
Related
- copyStream(java.io.InputStream src, java.io.OutputStream dest)
- copyStream(OutputStream out, InputStream in, int bufsz)
- copyStream(OutputStream outStream, InputStream inStream)
- copyStream(Reader input, Writer output)
- copyStreamAndClose(InputStream is, OutputStream os)
- copyStreamBounded(InputStream in, OutputStream out, long length)
- copyStreamContent(InputStream inputStream, OutputStream outputStream)
- copyStreamContent(InputStream inputStream, OutputStream outputStream)
- copyStreamFully(InputStream in, OutputStream out, int length)