001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019 package org.apache.commons.compress.utils; 020 021 import java.io.IOException; 022 import java.io.InputStream; 023 import java.io.OutputStream; 024 025 /** 026 * Utility functions 027 * @Immutable 028 */ 029 public final class IOUtils { 030 031 /** Private constructor to prevent instantiation of this utility class. */ 032 private IOUtils(){ 033 } 034 035 /** 036 * Copies the content of a InputStream into an OutputStream. 037 * Uses a default buffer size of 8024 bytes. 038 * 039 * @param input 040 * the InputStream to copy 041 * @param output 042 * the target Stream 043 * @throws IOException 044 * if an error occurs 045 */ 046 public static long copy(final InputStream input, final OutputStream output) throws IOException { 047 return copy(input, output, 8024); 048 } 049 050 /** 051 * Copies the content of a InputStream into an OutputStream 052 * 053 * @param input 054 * the InputStream to copy 055 * @param output 056 * the target Stream 057 * @param buffersize 058 * the buffer size to use 059 * @throws IOException 060 * if an error occurs 061 */ 062 public static long copy(final InputStream input, final OutputStream output, int buffersize) throws IOException { 063 final byte[] buffer = new byte[buffersize]; 064 int n = 0; 065 long count=0; 066 while (-1 != (n = input.read(buffer))) { 067 output.write(buffer, 0, n); 068 count += n; 069 } 070 return count; 071 } 072 }