Class CharStreams
- java.lang.Object
-
- com.google.common.io.CharStreams
-
@Beta public final class CharStreams extends Object
Provides utility methods for working with character streams.All method parameters must be non-null unless documented otherwise.
Some of the methods in this class take arguments with a generic type of
Readable & Closeable. AReaderimplements both of those interfaces. Similarly forAppendable & CloseableandWriter.- Since:
- 1.0
-
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static CharSinkasCharSink(OutputSupplier<? extends Appendable> supplier)Returns a view of the givenAppendablesupplier as aCharSink.static CharSourceasCharSource(InputSupplier<? extends Readable> supplier)Returns a view of the givenReadablesupplier as aCharSource.static CharSourceasCharSource(String string)Deprecated.UseCharSource.wrap(CharSequence)instead.static WriterasWriter(Appendable target)Returns a Writer that sends all output to the givenAppendabletarget.static <R extends Readable & Closeable,W extends Appendable & Closeable>
longcopy(InputSupplier<R> from, OutputSupplier<W> to)OpensReadableandAppendableobjects from the given factories, copies all characters between the two, and closes them.static <R extends Readable & Closeable>
longcopy(InputSupplier<R> from, Appendable to)Opens aReadableobject from the supplier, copies all characters to theAppendableobject, and closes the input.static longcopy(Readable from, Appendable to)Copies all characters between theReadableandAppendableobjects.static InputSupplier<Reader>join(InputSupplier<? extends Reader>... suppliers)Varargs form ofjoin(Iterable).static InputSupplier<Reader>join(Iterable<? extends InputSupplier<? extends Reader>> suppliers)Joins multipleReadersuppliers into a single supplier.static InputSupplier<InputStreamReader>newReaderSupplier(InputSupplier<? extends InputStream> in, Charset charset)Returns a factory that will supply instances ofInputStreamReader, using the givenInputStreamfactory and character set.static InputSupplier<StringReader>newReaderSupplier(String value)Returns a factory that will supply instances ofStringReaderthat read a string value.static OutputSupplier<OutputStreamWriter>newWriterSupplier(OutputSupplier<? extends OutputStream> out, Charset charset)Returns a factory that will supply instances ofOutputStreamWriter, using the givenOutputStreamfactory and character set.static WriternullWriter()Returns aWriterthat simply discards written chars.static <R extends Readable & Closeable>
StringreadFirstLine(InputSupplier<R> supplier)static <R extends Readable & Closeable>
List<String>readLines(InputSupplier<R> supplier)static <R extends Readable & Closeable,T>
TreadLines(InputSupplier<R> supplier, LineProcessor<T> callback)static List<String>readLines(Readable r)Reads all of the lines from aReadableobject.static <T> TreadLines(Readable readable, LineProcessor<T> processor)Streams lines from aReadableobject, stopping when the processor returnsfalseor all lines have been read and returning the result produced by the processor.static voidskipFully(Reader reader, long n)Discardsncharacters of data from the reader.static <R extends Readable & Closeable>
StringtoString(InputSupplier<R> supplier)static StringtoString(Readable r)static <W extends Appendable & Closeable>
voidwrite(CharSequence from, OutputSupplier<W> to)Writes a character sequence (such as a string) to an appendable object from the given supplier.
-
-
-
Method Detail
-
newReaderSupplier
public static InputSupplier<StringReader> newReaderSupplier(String value)
Returns a factory that will supply instances ofStringReaderthat read a string value.- Parameters:
value- the string to read- Returns:
- the factory
-
asCharSource
@Deprecated public static CharSource asCharSource(String string)
Deprecated.UseCharSource.wrap(CharSequence)instead. This method is scheduled to be removed in Guava 16.0.Returns aCharSourcethat reads the given string value.- Since:
- 14.0
-
newReaderSupplier
public static InputSupplier<InputStreamReader> newReaderSupplier(InputSupplier<? extends InputStream> in, Charset charset)
Returns a factory that will supply instances ofInputStreamReader, using the givenInputStreamfactory and character set.- Parameters:
in- the factory that will be used to open input streamscharset- the charset used to decode the input stream; seeCharsetsfor helpful predefined constants- Returns:
- the factory
-
newWriterSupplier
public static OutputSupplier<OutputStreamWriter> newWriterSupplier(OutputSupplier<? extends OutputStream> out, Charset charset)
Returns a factory that will supply instances ofOutputStreamWriter, using the givenOutputStreamfactory and character set.- Parameters:
out- the factory that will be used to open output streamscharset- the charset used to encode the output stream; seeCharsetsfor helpful predefined constants- Returns:
- the factory
-
write
public static <W extends Appendable & Closeable> void write(CharSequence from, OutputSupplier<W> to) throws IOException
Writes a character sequence (such as a string) to an appendable object from the given supplier.- Parameters:
from- the character sequence to writeto- the output supplier- Throws:
IOException- if an I/O error occurs
-
copy
public static <R extends Readable & Closeable,W extends Appendable & Closeable> long copy(InputSupplier<R> from, OutputSupplier<W> to) throws IOException
OpensReadableandAppendableobjects from the given factories, copies all characters between the two, and closes them.- Parameters:
from- the input factoryto- the output factory- Returns:
- the number of characters copied
- Throws:
IOException- if an I/O error occurs
-
copy
public static <R extends Readable & Closeable> long copy(InputSupplier<R> from, Appendable to) throws IOException
Opens aReadableobject from the supplier, copies all characters to theAppendableobject, and closes the input. Does not close or flush the output.- Parameters:
from- the input factoryto- the object to write to- Returns:
- the number of characters copied
- Throws:
IOException- if an I/O error occurs
-
copy
public static long copy(Readable from, Appendable to) throws IOException
Copies all characters between theReadableandAppendableobjects. Does not close or flush either object.- Parameters:
from- the object to read fromto- the object to write to- Returns:
- the number of characters copied
- Throws:
IOException- if an I/O error occurs
-
toString
public static String toString(Readable r) throws IOException
- Parameters:
r- the object to read from- Returns:
- a string containing all the characters
- Throws:
IOException- if an I/O error occurs
-
toString
public static <R extends Readable & Closeable> String toString(InputSupplier<R> supplier) throws IOException
- Parameters:
supplier- the factory to read from- Returns:
- a string containing all the characters
- Throws:
IOException- if an I/O error occurs
-
readFirstLine
public static <R extends Readable & Closeable> String readFirstLine(InputSupplier<R> supplier) throws IOException
Reads the first line from aReadable&Closeableobject supplied by a factory. The line does not include line-termination characters, but does include other leading and trailing whitespace.- Parameters:
supplier- the factory to read from- Returns:
- the first line, or null if the reader is empty
- Throws:
IOException- if an I/O error occurs
-
readLines
public static <R extends Readable & Closeable> List<String> readLines(InputSupplier<R> supplier) throws IOException
Reads all of the lines from aReadable&Closeableobject supplied by a factory. The lines do not include line-termination characters, but do include other leading and trailing whitespace.- Parameters:
supplier- the factory to read from- Returns:
- a mutable
Listcontaining all the lines - Throws:
IOException- if an I/O error occurs
-
readLines
public static List<String> readLines(Readable r) throws IOException
Reads all of the lines from aReadableobject. The lines do not include line-termination characters, but do include other leading and trailing whitespace.Does not close the
Readable. If reading files or resources you should use theFiles.readLines(java.io.File, java.nio.charset.Charset)andResources.readLines(java.net.URL, java.nio.charset.Charset, com.google.common.io.LineProcessor<T>)methods.- Parameters:
r- the object to read from- Returns:
- a mutable
Listcontaining all the lines - Throws:
IOException- if an I/O error occurs
-
readLines
public static <T> T readLines(Readable readable, LineProcessor<T> processor) throws IOException
Streams lines from aReadableobject, stopping when the processor returnsfalseor all lines have been read and returning the result produced by the processor. Does not closereadable. Note that this method may not fully consume the contents ofreadableif the processor stops processing early.- Throws:
IOException- if an I/O error occurs- Since:
- 14.0
-
readLines
public static <R extends Readable & Closeable,T> T readLines(InputSupplier<R> supplier, LineProcessor<T> callback) throws IOException
Streams lines from aReadableandCloseableobject supplied by a factory, stopping when our callback returns false, or we have read all of the lines.- Parameters:
supplier- the factory to read fromcallback- the LineProcessor to use to handle the lines- Returns:
- the output of processing the lines
- Throws:
IOException- if an I/O error occurs
-
join
public static InputSupplier<Reader> join(Iterable<? extends InputSupplier<? extends Reader>> suppliers)
Joins multipleReadersuppliers into a single supplier. Reader returned from the supplier will contain the concatenated data from the readers of the underlying suppliers.Reading from the joined reader will throw a
NullPointerExceptionif any of the suppliers are null or return null.Only one underlying reader will be open at a time. Closing the joined reader will close the open underlying reader.
- Parameters:
suppliers- the suppliers to concatenate- Returns:
- a supplier that will return a reader containing the concatenated data
-
join
public static InputSupplier<Reader> join(InputSupplier<? extends Reader>... suppliers)
Varargs form ofjoin(Iterable).
-
skipFully
public static void skipFully(Reader reader, long n) throws IOException
Discardsncharacters of data from the reader. This method will block until the full amount has been skipped. Does not close the reader.- Parameters:
reader- the reader to read fromn- the number of characters to skip- Throws:
EOFException- if this stream reaches the end before skipping all the charactersIOException- if an I/O error occurs
-
nullWriter
public static Writer nullWriter()
Returns aWriterthat simply discards written chars.- Since:
- 15.0
-
asWriter
public static Writer asWriter(Appendable target)
Returns a Writer that sends all output to the givenAppendabletarget. Closing the writer will close the target if it isCloseable, and flushing the writer will flush the target if it isFlushable.- Parameters:
target- the object to which output will be sent- Returns:
- a new Writer object, unless target is a Writer, in which case the target is returned
-
asCharSource
public static CharSource asCharSource(InputSupplier<? extends Readable> supplier)
Returns a view of the givenReadablesupplier as aCharSource.This method is a temporary method provided for easing migration from suppliers to sources and sinks.
- Since:
- 15.0
-
asCharSink
public static CharSink asCharSink(OutputSupplier<? extends Appendable> supplier)
Returns a view of the givenAppendablesupplier as aCharSink.This method is a temporary method provided for easing migration from suppliers to sources and sinks.
- Since:
- 15.0
-
-