|
||||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.codehaus.spice.salt.io.IOUtil
General IO Stream manipulation.
This class provides static utility
methods for input/output operations, particularly buffered copying between
sources (InputStream
, Reader
, String
and byte[]
) and destinations (OutputStream
,
Writer
, String
and byte[]
).
Unless otherwise noted, these copy
methods 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 each copy
method, a variant is provided that allows the
caller to specify the buffer size (the default is 4k). As the buffer size can
have a fairly large impact on speed, this may be worth tweaking. Often "large
buffer -> faster" does not hold, even for large data transfers.
For byte-to-char methods, a copy
variant allows the encoding
to be selected (otherwise the platform default is used).
The copy
methods use an internal buffer when copying. It is
therefore advisable not to deliberately wrap the stream arguments to
the copy
methods in Buffered*
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 further read
requests can inexpensively get their data (until the buffer runs out).
However, the copy
methods do the same thing, keeping an
internal buffer, populated by InputStream.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).
Constructor Summary | |
---|---|
IOUtil()
|
Method Summary | |
---|---|
static boolean |
contentEquals(InputStream input1,
InputStream input2)
Compare the contents of two Streams to determine if they are equal or not. |
static void |
copy(byte[] input,
OutputStream output)
Copy bytes from a byte[] to an OutputStream . |
static void |
copy(byte[] input,
Writer output)
Copy and convert bytes from a byte[] to chars on a
Writer . |
static void |
copy(byte[] input,
Writer output,
int bufferSize)
Copy and convert bytes from a byte[] to chars on a
Writer . |
static void |
copy(byte[] input,
Writer output,
String encoding)
Copy and convert bytes from a byte[] to chars on a
Writer , using the specified encoding. |
static void |
copy(byte[] input,
Writer output,
String encoding,
int bufferSize)
Copy and convert bytes from a byte[] to chars on a
Writer , using the specified encoding. |
static void |
copy(InputStream input,
OutputStream output)
Copy bytes from an InputStream to an
OutputStream . |
static void |
copy(InputStream input,
OutputStream output,
int bufferSize)
Copy bytes from an InputStream to an
OutputStream . |
static void |
copy(InputStream input,
Writer output)
Copy and convert bytes from an InputStream to chars on a
Writer . |
static void |
copy(InputStream input,
Writer output,
int bufferSize)
Copy and convert bytes from an InputStream to chars on a
Writer . |
static void |
copy(InputStream input,
Writer output,
String encoding)
Copy and convert bytes from an InputStream to chars on a
Writer , using the specified encoding. |
static void |
copy(InputStream input,
Writer output,
String encoding,
int bufferSize)
Copy and convert bytes from an InputStream to chars on a
Writer , using the specified encoding. |
static void |
copy(Reader input,
OutputStream output)
Serialize chars from a Reader to bytes on an
OutputStream , and flush the OutputStream . |
static void |
copy(Reader input,
OutputStream output,
int bufferSize)
Serialize chars from a Reader to bytes on an
OutputStream , and flush the OutputStream . |
static void |
copy(Reader input,
Writer output)
Copy chars from a Reader to a Writer . |
static void |
copy(Reader input,
Writer output,
int bufferSize)
Copy chars from a Reader to a Writer . |
static void |
copy(String input,
OutputStream output)
Serialize chars from a String to bytes on an
OutputStream , and flush the OutputStream . |
static void |
copy(String input,
OutputStream output,
int bufferSize)
Serialize chars from a String to bytes on an
OutputStream , and flush the OutputStream . |
static void |
copy(String input,
Writer output)
Copy chars from a String to a Writer . |
static void |
shutdownReader(Reader input)
Unconditionally close an Reader . |
static void |
shutdownStream(InputStream input)
Unconditionally close an InputStream . |
static void |
shutdownStream(OutputStream output)
Unconditionally close an OutputStream . |
static void |
shutdownWriter(Writer output)
Unconditionally close an Writer . |
static byte[] |
toByteArray(InputStream input)
Get the contents of an InputStream as a
byte[] . |
static byte[] |
toByteArray(InputStream input,
int bufferSize)
Get the contents of an InputStream as a
byte[] . |
static byte[] |
toByteArray(Reader input)
Get the contents of a Reader as a byte[] . |
static byte[] |
toByteArray(Reader input,
int bufferSize)
Get the contents of a Reader as a byte[] . |
static byte[] |
toByteArray(String input)
Get the contents of a String as a byte[] . |
static byte[] |
toByteArray(String input,
int bufferSize)
Get the contents of a String as a byte[] . |
static String |
toString(byte[] input)
Get the contents of a byte[] as a String. |
static String |
toString(byte[] input,
int bufferSize)
Get the contents of a byte[] as a String. |
static String |
toString(byte[] input,
String encoding)
Get the contents of a byte[] as a String. |
static String |
toString(byte[] input,
String encoding,
int bufferSize)
Get the contents of a byte[] as a String. |
static String |
toString(InputStream input)
Get the contents of an InputStream as a String. |
static String |
toString(InputStream input,
int bufferSize)
Get the contents of an InputStream as a String. |
static String |
toString(InputStream input,
String encoding)
Get the contents of an InputStream as a String. |
static String |
toString(InputStream input,
String encoding,
int bufferSize)
Get the contents of an InputStream as a String. |
static String |
toString(Reader input)
Get the contents of a Reader as a String. |
static String |
toString(Reader input,
int bufferSize)
Get the contents of a Reader as a String. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public IOUtil()
Method Detail |
public static void shutdownReader(Reader input)
Reader
. Equivalent to Reader.close()
, except any exceptions will be ignored.
input
- A (possibly null) Readerpublic static void shutdownWriter(Writer output)
Writer
. Equivalent to Writer.close()
, except any exceptions will be ignored.
output
- A (possibly null) Writerpublic static void shutdownStream(OutputStream output)
OutputStream
. Equivalent to OutputStream.close()
, except any exceptions will be ignored.
output
- A (possibly null) OutputStreampublic static void shutdownStream(InputStream input)
InputStream
. Equivalent to InputStream.close()
, except any exceptions will be ignored.
input
- A (possibly null) InputStreampublic static void copy(InputStream input, OutputStream output) throws IOException
InputStream
to an
OutputStream
.
IOException
public static void copy(InputStream input, OutputStream output, int bufferSize) throws IOException
InputStream
to an
OutputStream
.
bufferSize
- Size of internal buffer to use.
IOException
public static void copy(Reader input, Writer output) throws IOException
Reader
to a Writer
.
IOException
public static void copy(Reader input, Writer output, int bufferSize) throws IOException
Reader
to a Writer
.
bufferSize
- Size of internal buffer to use.
IOException
public static void copy(InputStream input, Writer output) throws IOException
InputStream
to chars on a
Writer
. The platform's default encoding is used for the
byte-to-char conversion.
IOException
public static void copy(InputStream input, Writer output, int bufferSize) throws IOException
InputStream
to chars on a
Writer
. The platform's default encoding is used for the
byte-to-char conversion.
bufferSize
- Size of internal buffer to use.
IOException
public static void copy(InputStream input, Writer output, String encoding) throws IOException
InputStream
to chars on a
Writer
, using the specified encoding.
encoding
- The name of a supported character encoding. See the IANA Charset
Registry for a list of valid encoding types.
IOException
public static void copy(InputStream input, Writer output, String encoding, int bufferSize) throws IOException
InputStream
to chars on a
Writer
, using the specified encoding.
encoding
- The name of a supported character encoding. See the IANA Charset
Registry for a list of valid encoding types.bufferSize
- Size of internal buffer to use.
IOException
public static String toString(InputStream input) throws IOException
InputStream
as a String. The
platform's default encoding is used for the byte-to-char conversion.
IOException
public static String toString(InputStream input, int bufferSize) throws IOException
InputStream
as a String. The
platform's default encoding is used for the byte-to-char conversion.
bufferSize
- Size of internal buffer to use.
IOException
public static String toString(InputStream input, String encoding) throws IOException
InputStream
as a String.
encoding
- The name of a supported character encoding. See the IANA Charset
Registry for a list of valid encoding types.
IOException
public static String toString(InputStream input, String encoding, int bufferSize) throws IOException
InputStream
as a String.
encoding
- The name of a supported character encoding. See the IANA Charset
Registry for a list of valid encoding types.bufferSize
- Size of internal buffer to use.
IOException
public static byte[] toByteArray(InputStream input) throws IOException
InputStream
as a
byte[]
.
IOException
public static byte[] toByteArray(InputStream input, int bufferSize) throws IOException
InputStream
as a
byte[]
.
bufferSize
- Size of internal buffer to use.
IOException
public static void copy(Reader input, OutputStream output) throws IOException
Reader
to bytes on an
OutputStream
, and flush the OutputStream
.
IOException
public static void copy(Reader input, OutputStream output, int bufferSize) throws IOException
Reader
to bytes on an
OutputStream
, and flush the OutputStream
.
bufferSize
- Size of internal buffer to use.
IOException
public static String toString(Reader input) throws IOException
Reader
as a String.
IOException
public static String toString(Reader input, int bufferSize) throws IOException
Reader
as a String.
bufferSize
- Size of internal buffer to use.
IOException
public static byte[] toByteArray(Reader input) throws IOException
Reader
as a byte[]
.
IOException
public static byte[] toByteArray(Reader input, int bufferSize) throws IOException
Reader
as a byte[]
.
bufferSize
- Size of internal buffer to use.
IOException
public static void copy(String input, OutputStream output) throws IOException
String
to bytes on an
OutputStream
, and flush the OutputStream
.
IOException
public static void copy(String input, OutputStream output, int bufferSize) throws IOException
String
to bytes on an
OutputStream
, and flush the OutputStream
.
bufferSize
- Size of internal buffer to use.
IOException
public static void copy(String input, Writer output) throws IOException
String
to a Writer
.
IOException
public static byte[] toByteArray(String input) throws IOException
String
as a byte[]
.
IOException
public static byte[] toByteArray(String input, int bufferSize) throws IOException
String
as a byte[]
.
bufferSize
- Size of internal buffer to use.
IOException
public static void copy(byte[] input, Writer output) throws IOException
byte[]
to chars on a
Writer
. The platform's default encoding is used for the
byte-to-char conversion.
IOException
public static void copy(byte[] input, Writer output, int bufferSize) throws IOException
byte[]
to chars on a
Writer
. The platform's default encoding is used for the
byte-to-char conversion.
bufferSize
- Size of internal buffer to use.
IOException
public static void copy(byte[] input, Writer output, String encoding) throws IOException
byte[]
to chars on a
Writer
, using the specified encoding.
encoding
- The name of a supported character encoding. See the IANA Charset
Registry for a list of valid encoding types.
IOException
public static void copy(byte[] input, Writer output, String encoding, int bufferSize) throws IOException
byte[]
to chars on a
Writer
, using the specified encoding.
encoding
- The name of a supported character encoding. See the IANA Charset
Registry for a list of valid encoding types.bufferSize
- Size of internal buffer to use.
IOException
public static String toString(byte[] input) throws IOException
byte[]
as a String. The platform's
default encoding is used for the byte-to-char conversion.
IOException
public static String toString(byte[] input, int bufferSize) throws IOException
byte[]
as a String. The platform's
default encoding is used for the byte-to-char conversion.
bufferSize
- Size of internal buffer to use.
IOException
public static String toString(byte[] input, String encoding) throws IOException
byte[]
as a String.
encoding
- The name of a supported character encoding. See the IANA Charset
Registry for a list of valid encoding types.
IOException
public static String toString(byte[] input, String encoding, int bufferSize) throws IOException
byte[]
as a String.
encoding
- The name of a supported character encoding. See the IANA Charset
Registry for a list of valid encoding types.bufferSize
- Size of internal buffer to use.
IOException
public static void copy(byte[] input, OutputStream output) throws IOException
byte[]
to an OutputStream
.
IOException
public static boolean contentEquals(InputStream input1, InputStream input2) throws IOException
input1
- the first streaminput2
- the second stream
IOException
|
||||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |