Class CopyUtils
- java.lang.Object
 - 
- org.apache.commons.io.CopyUtils
 
 
- 
@Deprecated public class CopyUtils extends java.lang.ObjectDeprecated.Use IOUtils. Will be removed in 3.0. Methods renamed to IOUtils.write() or IOUtils.copy(). Null handling behavior changed in IOUtils (null data does not throw NullPointerException).This class provides static utility methods for buffered copying between sources (InputStream,Reader,Stringandbyte[]) and destinations (OutputStream,Writer,Stringandbyte[]).Unless otherwise noted, these
copymethods do not flush or close the streams. Often doing so would require making non-portable assumptions about the streams' origin and further use. This means that both streams'close()methods must be called after copying. if one omits this step, then the stream resources (sockets, file descriptors) are released when the associated Stream is garbage-collected. It is not a good idea to rely on this mechanism. For a good overview of the distinction between "memory management" and "resource management", see this UnixReview article.For byte-to-char methods, a
copyvariant allows the encoding to be selected (otherwise the platform default is used). We would like to encourage you to always specify the encoding because relying on the platform default can lead to unexpected results.We don't provide special variants for the
copymethods that let you specify the buffer size because in modern VMs the impact on speed seems to be minimal. We're using a default buffer size of 4 KB.The
copymethods use an internal buffer when copying. It is therefore advisable not to deliberately wrap the stream arguments to thecopymethods inBuffered*streams. For example, don't do the following:copy( new BufferedInputStream( in ), new BufferedOutputStream( out ) );
The rationale is as follows:Imagine that an InputStream's read() is a very expensive operation, which would usually suggest wrapping in a BufferedInputStream. The BufferedInputStream works by issuing infrequent
InputStream.read(byte[] b, int off, int len)requests on the underlying InputStream, to fill an internal buffer, from which furtherreadrequests can inexpensively get their data (until the buffer runs out).However, the
copymethods do the same thing, keeping an internal buffer, populated byInputStream.read(byte[] b, int off, int len)requests. Having two buffers (or three if the destination stream is also buffered) is pointless, and the unnecessary buffer management hurts performance slightly (about 3%, according to some simple experiments).Behold, intrepid explorers; a map of this class:
Method Input Output Dependency ------ ----- ------ ------- 1 copy InputStream OutputStream (primitive) 2 copy Reader Writer (primitive) 3 copy InputStream Writer 2 4 copy Reader OutputStream 2 5 copy String OutputStream 2 6 copy String Writer (trivial) 7 copy byte[] Writer 3 8 copy byte[] OutputStream (trivial)Note that only the first two methods shuffle bytes; the rest use these two, or (if possible) copy using native Java copy methods. As there are method variants to specify the encoding, each row may correspond to up to 2 methods.
Provenance: Excalibur.
 
- 
- 
Constructor Summary
Constructors Constructor Description CopyUtils()Deprecated.TODO Make private in 3.0. 
- 
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static voidcopy(byte[] input, java.io.OutputStream output)Deprecated.Copies bytes from abyte[]to anOutputStream.static voidcopy(byte[] input, java.io.Writer output)Deprecated.Usecopy(byte[], Writer, String)insteadstatic voidcopy(byte[] input, java.io.Writer output, java.lang.String encoding)Deprecated.Copies and convert bytes from abyte[]to chars on aWriter, using the specified encoding.static intcopy(java.io.InputStream input, java.io.OutputStream output)Deprecated.Copies bytes from anInputStreamto anOutputStream.static voidcopy(java.io.InputStream input, java.io.Writer output)Deprecated.Usecopy(InputStream, Writer, String)insteadstatic voidcopy(java.io.InputStream input, java.io.Writer output, java.lang.String encoding)Deprecated.Copies and convert bytes from anInputStreamto chars on aWriter, using the specified encoding.static voidcopy(java.io.Reader input, java.io.OutputStream output)Deprecated.Usecopy(Reader, OutputStream, String)insteadstatic voidcopy(java.io.Reader input, java.io.OutputStream output, java.lang.String encoding)Deprecated.Serialize chars from aReaderto bytes on anOutputStream, and flush theOutputStream.static intcopy(java.io.Reader input, java.io.Writer output)Deprecated.Copies chars from aReaderto aWriter.static voidcopy(java.lang.String input, java.io.OutputStream output)Deprecated.Usecopy(String, OutputStream, String)insteadstatic voidcopy(java.lang.String input, java.io.OutputStream output, java.lang.String encoding)Deprecated.Serialize chars from aStringto bytes on anOutputStream, and flush theOutputStream.static voidcopy(java.lang.String input, java.io.Writer output)Deprecated.Copies chars from aStringto aWriter. 
 - 
 
- 
- 
Method Detail
- 
copy
public static void copy(byte[] input, java.io.OutputStream output) throws java.io.IOExceptionDeprecated.Copies bytes from abyte[]to anOutputStream.- Parameters:
 input- the byte array to read fromoutput- theOutputStreamto write to- Throws:
 java.io.IOException- In case of an I/O problem
 
- 
copy
@Deprecated public static void copy(byte[] input, java.io.Writer output) throws java.io.IOExceptionDeprecated.Usecopy(byte[], Writer, String)insteadCopies and convert bytes from abyte[]to chars on aWriter. The platform's default encoding is used for the byte-to-char conversion.- Parameters:
 input- the byte array to read fromoutput- theWriterto write to- Throws:
 java.io.IOException- In case of an I/O problem
 
- 
copy
public static void copy(byte[] input, java.io.Writer output, java.lang.String encoding) throws java.io.IOExceptionDeprecated.Copies and convert bytes from abyte[]to chars on aWriter, using the specified encoding.- Parameters:
 input- the byte array to read fromoutput- theWriterto write toencoding- The name of a supported character encoding. See the IANA Charset Registry for a list of valid encoding types.- Throws:
 java.io.IOException- In case of an I/O problem
 
- 
copy
public static int copy(java.io.InputStream input, java.io.OutputStream output) throws java.io.IOExceptionDeprecated.Copies bytes from anInputStreamto anOutputStream.- Parameters:
 input- theInputStreamto read fromoutput- theOutputStreamto write to- Returns:
 - the number of bytes copied
 - Throws:
 java.io.IOException- In case of an I/O problem
 
- 
copy
@Deprecated public static void copy(java.io.InputStream input, java.io.Writer output) throws java.io.IOExceptionDeprecated.Usecopy(InputStream, Writer, String)insteadCopies and convert bytes from anInputStreamto chars on aWriter. The platform's default encoding is used for the byte-to-char conversion.- Parameters:
 input- theInputStreamto read fromoutput- theWriterto write to- Throws:
 java.io.IOException- In case of an I/O problem
 
- 
copy
public static void copy(java.io.InputStream input, java.io.Writer output, java.lang.String encoding) throws java.io.IOExceptionDeprecated.Copies and convert bytes from anInputStreamto chars on aWriter, using the specified encoding.- Parameters:
 input- theInputStreamto read fromoutput- theWriterto write toencoding- The name of a supported character encoding. See the IANA Charset Registry for a list of valid encoding types.- Throws:
 java.io.IOException- In case of an I/O problem
 
- 
copy
@Deprecated public static void copy(java.io.Reader input, java.io.OutputStream output) throws java.io.IOExceptionDeprecated.Usecopy(Reader, OutputStream, String)insteadSerialize chars from aReaderto bytes on anOutputStream, and flush theOutputStream. Uses the default platform encoding.- Parameters:
 input- theReaderto read fromoutput- theOutputStreamto write to- Throws:
 java.io.IOException- In case of an I/O problem
 
- 
copy
public static void copy(java.io.Reader input, java.io.OutputStream output, java.lang.String encoding) throws java.io.IOExceptionDeprecated.Serialize chars from aReaderto bytes on anOutputStream, and flush theOutputStream.- Parameters:
 input- theReaderto read fromoutput- theOutputStreamto write toencoding- The name of a supported character encoding. See the IANA Charset Registry for a list of valid encoding types.- Throws:
 java.io.IOException- In case of an I/O problem- Since:
 - 2.5
 
 
- 
copy
public static int copy(java.io.Reader input, java.io.Writer output) throws java.io.IOExceptionDeprecated.Copies chars from aReaderto aWriter.- Parameters:
 input- theReaderto read fromoutput- theWriterto write to- Returns:
 - the number of characters copied
 - Throws:
 java.io.IOException- In case of an I/O problem
 
- 
copy
@Deprecated public static void copy(java.lang.String input, java.io.OutputStream output) throws java.io.IOExceptionDeprecated.Usecopy(String, OutputStream, String)insteadSerialize chars from aStringto bytes on anOutputStream, and flush theOutputStream. Uses the platform default encoding.- Parameters:
 input- theStringto read fromoutput- theOutputStreamto write to- Throws:
 java.io.IOException- In case of an I/O problem
 
- 
copy
public static void copy(java.lang.String input, java.io.OutputStream output, java.lang.String encoding) throws java.io.IOExceptionDeprecated.Serialize chars from aStringto bytes on anOutputStream, and flush theOutputStream.- Parameters:
 input- theStringto read fromoutput- theOutputStreamto write toencoding- The name of a supported character encoding. See the IANA Charset Registry for a list of valid encoding types.- Throws:
 java.io.IOException- In case of an I/O problem- Since:
 - 2.5
 
 
- 
copy
public static void copy(java.lang.String input, java.io.Writer output) throws java.io.IOExceptionDeprecated.Copies chars from aStringto aWriter.- Parameters:
 input- theStringto read fromoutput- theWriterto write to- Throws:
 java.io.IOException- In case of an I/O problem
 
 - 
 
 -