public class IOGroovyMethods extends DefaultGroovyMethodsSupport
public static long size(File self)
provides a size()
method for File
.
NOTE: While this class contains many 'public' static methods, it is primarily regarded as an internal class (its internal package name suggests this also). We value backwards compatibility of these methods when used within Groovy but value less backwards compatibility at the Java method call level. I.e. future versions of Groovy may remove or move a method call in this file but would normally aim to keep the method available from within Groovy.
Constructor and Description |
---|
IOGroovyMethods() |
Modifier and Type | Method and Description |
---|---|
static void |
eachByte(InputStream is,
Closure closure)
Traverse through each byte of the specified stream.
|
static void |
eachByte(InputStream is,
int bufferLen,
Closure closure)
Traverse through each the specified stream reading bytes into a buffer
and calling the 2 parameter closure with this buffer and the number of bytes.
|
static <T> T |
eachLine(InputStream stream,
Closure<T> closure)
Iterates through this stream, passing each line to the given 1 or 2 arg closure.
|
static <T> T |
eachLine(InputStream stream,
int firstLine,
Closure<T> closure)
Iterates through this stream, passing each line to the given 1 or 2 arg closure.
|
static <T> T |
eachLine(InputStream stream,
String charset,
Closure<T> closure)
Iterates through this stream reading with the provided charset, passing each line to the
given 1 or 2 arg closure.
|
static <T> T |
eachLine(InputStream stream,
String charset,
int firstLine,
Closure<T> closure)
Iterates through this stream reading with the provided charset, passing each line to
the given 1 or 2 arg closure.
|
static <T> T |
eachLine(Reader self,
Closure<T> closure)
Iterates through the given reader line by line.
|
static <T> T |
eachLine(Reader self,
int firstLine,
Closure<T> closure)
Iterates through the given reader line by line.
|
static void |
eachObject(ObjectInputStream ois,
Closure closure)
Iterates through the given object stream object by object.
|
static Writable |
filterLine(InputStream self,
Closure predicate)
Filter lines from an input stream using a closure predicate.
|
static Writable |
filterLine(InputStream self,
String charset,
Closure predicate)
Filter lines from an input stream using a closure predicate.
|
static void |
filterLine(InputStream self,
Writer writer,
Closure predicate)
Uses a closure to filter lines from this InputStream and pass them to
the given writer.
|
static void |
filterLine(InputStream self,
Writer writer,
String charset,
Closure predicate)
Uses a closure to filter lines from this InputStream and pass them to
the given writer.
|
static Writable |
filterLine(Reader reader,
Closure closure)
Filter the lines from this Reader, and return a Writable which can be
used to stream the filtered lines to a destination.
|
static void |
filterLine(Reader reader,
Writer writer,
Closure closure)
Filter the lines from a reader and write them on the writer,
according to a closure which returns true if the line should be included.
|
static byte[] |
getBytes(InputStream is)
Read the content of this InputStream and return it as a byte[].
|
static String |
getText(BufferedReader reader)
Read the content of the BufferedReader and return it as a String.
|
static String |
getText(InputStream is)
Read the content of this InputStream and return it as a String.
|
static String |
getText(InputStream is,
String charset)
Read the content of this InputStream using specified charset and return
it as a String.
|
static String |
getText(Reader reader)
Read the content of the Reader and return it as a String.
|
static Iterator<Byte> |
iterator(DataInputStream self)
Standard iterator for a data input stream which iterates through the
stream content a Byte at a time.
|
static Iterator<Byte> |
iterator(InputStream self)
Standard iterator for a input stream which iterates through the stream
content in a byte-based fashion.
|
static Iterator<String> |
iterator(Reader self)
Creates an iterator which will traverse through the reader a line at a time.
|
static Appendable |
leftShift(Appendable self,
Object value)
Overloads the leftShift operator for Appendable to allow an object to be appended
using Groovy's default representation for the object.
|
static void |
leftShift(ObjectOutputStream self,
Object value)
Overloads the leftShift operator to add objects to an ObjectOutputStream.
|
static OutputStream |
leftShift(OutputStream self,
byte[] value)
Overloads the leftShift operator to provide an append mechanism to add bytes to a stream.
|
static OutputStream |
leftShift(OutputStream self,
InputStream in)
Pipe an InputStream into an OutputStream for efficient stream copying.
|
static Writer |
leftShift(OutputStream self,
Object value)
Overloads the leftShift operator to provide an append mechanism to add values to a stream.
|
static Writer |
leftShift(Writer self,
Object value)
Overloads the leftShift operator for Writer to allow an object to be written
using Groovy's default representation for the object.
|
static ObjectInputStream |
newObjectInputStream(InputStream inputStream)
Create an object input stream for this input stream.
|
static ObjectInputStream |
newObjectInputStream(InputStream inputStream,
ClassLoader classLoader)
Create an object input stream for this input stream using the given class loader.
|
static ObjectOutputStream |
newObjectOutputStream(OutputStream outputStream)
Create an object output stream for this output stream.
|
static PrintWriter |
newPrintWriter(OutputStream stream)
Create a new PrintWriter for this OutputStream.
|
static PrintWriter |
newPrintWriter(Writer writer)
Create a new PrintWriter for this Writer.
|
static BufferedReader |
newReader(InputStream self)
Creates a reader for this input stream.
|
static BufferedReader |
newReader(InputStream self,
String charset)
Creates a reader for this input stream, using the specified
charset as the encoding.
|
static Writer |
newWriter(OutputStream stream)
Creates a writer for this stream.
|
static Writer |
newWriter(OutputStream stream,
String charset)
Creates a writer for this stream using the given charset.
|
static String |
readLine(Reader self)
Read a single, whole line from the given Reader.
|
static List<String> |
readLines(InputStream stream)
Reads the stream into a list, with one element for each line.
|
static List<String> |
readLines(InputStream stream,
String charset)
Reads the stream into a list, with one element for each line.
|
static List<String> |
readLines(Reader reader)
Reads the reader into a list of Strings, with one entry for each line.
|
static void |
setBytes(OutputStream os,
byte[] bytes)
Write the byte[] to the output stream.
|
static <T> T |
splitEachLine(InputStream stream,
Pattern pattern,
Closure<T> closure)
Iterates through the given InputStream line by line, splitting each line using
the given separator Pattern.
|
static <T> T |
splitEachLine(InputStream stream,
Pattern pattern,
String charset,
Closure<T> closure)
Iterates through the given InputStream line by line using the specified
encoding, splitting each line using the given separator Pattern.
|
static <T> T |
splitEachLine(InputStream stream,
String regex,
Closure<T> closure)
Iterates through the given InputStream line by line, splitting each line using
the given separator.
|
static <T> T |
splitEachLine(InputStream stream,
String regex,
String charset,
Closure<T> closure)
Iterates through the given InputStream line by line using the specified
encoding, splitting each line using the given separator.
|
static <T> T |
splitEachLine(Reader self,
Pattern pattern,
Closure<T> closure)
Iterates through the given reader line by line, splitting each line using
the given regex separator Pattern.
|
static <T> T |
splitEachLine(Reader self,
String regex,
Closure<T> closure)
Iterates through the given reader line by line, splitting each line using
the given regex separator.
|
static void |
transformChar(Reader self,
Writer writer,
Closure closure)
Transforms each character from this reader by passing it to the given
closure.
|
static void |
transformLine(Reader reader,
Writer writer,
Closure closure)
Transforms the lines from a reader with a Closure and
write them to a writer.
|
static <T,U extends Closeable> |
withCloseable(U self,
Closure<T> action)
Allows this closeable to be used within the closure, ensuring that it
is closed once the closure has been executed and before this method returns.
|
static Appendable |
withFormatter(Appendable self,
Closure closure)
Invokes a Closure that uses a Formatter taking care of resource handling.
|
static Appendable |
withFormatter(Appendable self,
Locale locale,
Closure closure)
Invokes a Closure that uses a Formatter taking care of resource handling.
|
static <T> T |
withObjectInputStream(InputStream inputStream,
ClassLoader classLoader,
Closure<T> closure)
Create a new ObjectInputStream for this file and pass it to the closure.
|
static <T> T |
withObjectInputStream(InputStream inputStream,
Closure<T> closure)
Create a new ObjectInputStream for this file and pass it to the closure.
|
static <T> T |
withObjectOutputStream(OutputStream outputStream,
Closure<T> closure)
Create a new ObjectOutputStream for this output stream and then pass it to the
closure.
|
static <T> T |
withPrintWriter(OutputStream stream,
Closure<T> closure)
Create a new PrintWriter for this OutputStream.
|
static <T> T |
withPrintWriter(Writer writer,
Closure<T> closure)
Create a new PrintWriter for this Writer.
|
static <T> T |
withReader(InputStream in,
Closure<T> closure)
Helper method to create a new Reader for a stream and then
passes it into the closure.
|
static <T> T |
withReader(InputStream in,
String charset,
Closure<T> closure)
Helper method to create a new Reader for a stream and then
passes it into the closure.
|
static <T> T |
withReader(Reader reader,
Closure<T> closure)
Allows this reader to be used within the closure, ensuring that it
is closed before this method returns.
|
static <T,U extends InputStream> |
withStream(U stream,
Closure<T> closure)
Allows this input stream to be used within the closure, ensuring that it
is flushed and closed before this method returns.
|
static <T,U extends OutputStream> |
withStream(U os,
Closure<T> closure)
Passes this OutputStream to the closure, ensuring that the stream
is closed after the closure returns, regardless of errors.
|
static <T> T |
withWriter(OutputStream stream,
Closure<T> closure)
Creates a writer from this stream, passing it to the given closure.
|
static <T> T |
withWriter(OutputStream stream,
String charset,
Closure<T> closure)
Creates a writer from this stream, passing it to the given closure.
|
static <T> T |
withWriter(Writer writer,
Closure<T> closure)
Allows this writer to be used within the closure, ensuring that it
is flushed and closed before this method returns.
|
static void |
write(Writer self,
Writable writable)
A helper method so that dynamic dispatch of the writer.write(object) method
will always use the more efficient Writable.writeTo(writer) mechanism if the
object implements the Writable interface.
|
static void |
writeLine(BufferedWriter writer,
String line)
Write the text and append a newline (using the platform's line-ending).
|
cloneSimilarCollection, cloneSimilarMap, closeQuietly, closeWithWarning, createSimilarArray, createSimilarCollection, createSimilarCollection, createSimilarCollection, createSimilarList, createSimilarMap, createSimilarOrDefaultCollection, createSimilarSet, normaliseIndex, sameType, subListBorders, subListBorders
public static Writer leftShift(Writer self, Object value) throws IOException
self
- a Writervalue
- an Object whose default representation will be written to the WriterIOException
- if an I/O error occurs.public static Appendable leftShift(Appendable self, Object value) throws IOException
self
- an Appendablevalue
- an Object whose default representation will be appended to the AppendableIOException
- if an I/O error occurs.public static Appendable withFormatter(Appendable self, Closure closure)
self
- an Appendableclosure
- a 1-arg Closure which will be called with a Formatter as its argumentpublic static Appendable withFormatter(Appendable self, Locale locale, Closure closure)
self
- an Appendablelocale
- a Locale used when creating the Formatterclosure
- a 1-arg Closure which will be called with a Formatter as its argumentpublic static void write(Writer self, Writable writable) throws IOException
self
- a Writerwritable
- an object implementing the Writable interfaceIOException
- if an I/O error occurs.public static Writer leftShift(OutputStream self, Object value) throws IOException
self
- an OutputStreamvalue
- a value to appendIOException
- if an I/O error occurs.public static void leftShift(ObjectOutputStream self, Object value) throws IOException
self
- an ObjectOutputStreamvalue
- an object to write to the streamIOException
- if an I/O error occurs.public static OutputStream leftShift(OutputStream self, InputStream in) throws IOException
self
- stream on which to writein
- stream to read fromIOException
- if an I/O error occurs.public static OutputStream leftShift(OutputStream self, byte[] value) throws IOException
self
- an OutputStreamvalue
- a value to appendIOException
- if an I/O error occurs.public static ObjectOutputStream newObjectOutputStream(OutputStream outputStream) throws IOException
outputStream
- an output streamIOException
- if an IOException occurs.public static <T> T withObjectOutputStream(OutputStream outputStream, Closure<T> closure) throws IOException
outputStream
- am output streamclosure
- a closureIOException
- if an IOException occurs.withStream(java.io.OutputStream, groovy.lang.Closure)
public static ObjectInputStream newObjectInputStream(InputStream inputStream) throws IOException
inputStream
- an input streamIOException
- if an IOException occurs.public static ObjectInputStream newObjectInputStream(InputStream inputStream, ClassLoader classLoader) throws IOException
inputStream
- an input streamclassLoader
- the class loader to use when loading the classIOException
- if an IOException occurs.public static void eachObject(ObjectInputStream ois, Closure closure) throws IOException, ClassNotFoundException
ois
- an ObjectInputStream, closed after the operationclosure
- a closureIOException
- if an IOException occurs.ClassNotFoundException
- if the class is not found.public static <T> T withObjectInputStream(InputStream inputStream, Closure<T> closure) throws IOException
inputStream
- an input streamclosure
- a closureIOException
- if an IOException occurs.withStream(java.io.InputStream, groovy.lang.Closure)
public static <T> T withObjectInputStream(InputStream inputStream, ClassLoader classLoader, Closure<T> closure) throws IOException
inputStream
- an input streamclassLoader
- the class loader to use when loading the classclosure
- a closureIOException
- if an IOException occurs.withStream(java.io.InputStream, groovy.lang.Closure)
public static <T> T eachLine(InputStream stream, String charset, Closure<T> closure) throws IOException
stream
- a streamcharset
- opens the stream with a specified charsetclosure
- a closure (arg 1 is line, optional arg 2 is line number starting at line 1)IOException
- if an IOException occurs.eachLine(java.io.InputStream, java.lang.String, int, groovy.lang.Closure)
public static <T> T eachLine(InputStream stream, String charset, int firstLine, Closure<T> closure) throws IOException
stream
- a streamcharset
- opens the stream with a specified charsetfirstLine
- the line number value used for the first line (default is 1, set to 0 to start counting from 0)closure
- a closure (arg 1 is line, optional arg 2 is line number)IOException
- if an IOException occurs.eachLine(java.io.Reader, int, groovy.lang.Closure)
public static <T> T eachLine(InputStream stream, Closure<T> closure) throws IOException
stream
- a streamclosure
- a closure (arg 1 is line, optional arg 2 is line number starting at line 1)IOException
- if an IOException occurs.eachLine(java.io.InputStream, int, groovy.lang.Closure)
public static <T> T eachLine(InputStream stream, int firstLine, Closure<T> closure) throws IOException
stream
- a streamfirstLine
- the line number value used for the first line (default is 1, set to 0 to start counting from 0)closure
- a closure (arg 1 is line, optional arg 2 is line number)IOException
- if an IOException occurs.eachLine(java.io.Reader, int, groovy.lang.Closure)
public static <T> T eachLine(Reader self, Closure<T> closure) throws IOException
self
- a Reader, closed after the method returnsclosure
- a closure (arg 1 is line, optional arg 2 is line number starting at line 1)IOException
- if an IOException occurs.eachLine(java.io.Reader, int, groovy.lang.Closure)
public static <T> T eachLine(Reader self, int firstLine, Closure<T> closure) throws IOException
self
- a Reader, closed after the method returnsfirstLine
- the line number value used for the first line (default is 1, set to 0 to start counting from 0)closure
- a closure which will be passed each line (or for 2 arg closures the line and line count)IOException
- if an IOException occurs.public static <T> T splitEachLine(Reader self, String regex, Closure<T> closure) throws IOException
Here is an example:
def s = 'The 3 quick\nbrown 4 fox' def result = '' new StringReader(s).splitEachLine(/\d/){ parts -> result += "${parts[0]}_${parts[1]}|" } assert result == 'The _ quick|brown _ fox|'
self
- a Reader, closed after the method returnsregex
- the delimiting regular expressionclosure
- a closureIOException
- if an IOException occurs.PatternSyntaxException
- if the regular expression's syntax is invalidString.split(java.lang.String)
public static <T> T splitEachLine(Reader self, Pattern pattern, Closure<T> closure) throws IOException
Here is an example:
def s = 'The 3 quick\nbrown 4 fox' def result = '' new StringReader(s).splitEachLine(~/\d/){ parts -> result += "${parts[0]}_${parts[1]}|" } assert result == 'The _ quick|brown _ fox|'
self
- a Reader, closed after the method returnspattern
- the regular expression Pattern for the delimiterclosure
- a closureIOException
- if an IOException occurs.PatternSyntaxException
- if the regular expression's syntax is invalidString.split(java.lang.String)
public static <T> T splitEachLine(InputStream stream, String regex, String charset, Closure<T> closure) throws IOException
stream
- an InputStreamregex
- the delimiting regular expressioncharset
- opens the stream with a specified charsetclosure
- a closureIOException
- if an IOException occurs.PatternSyntaxException
- if the regular expression's syntax is invalidsplitEachLine(java.io.Reader, java.lang.String, groovy.lang.Closure)
public static <T> T splitEachLine(InputStream stream, Pattern pattern, String charset, Closure<T> closure) throws IOException
stream
- an InputStreampattern
- the regular expression Pattern for the delimitercharset
- opens the stream with a specified charsetclosure
- a closureIOException
- if an IOException occurs.splitEachLine(java.io.Reader, java.util.regex.Pattern, groovy.lang.Closure)
public static <T> T splitEachLine(InputStream stream, String regex, Closure<T> closure) throws IOException
stream
- an InputStreamregex
- the delimiting regular expressionclosure
- a closureIOException
- if an IOException occurs.PatternSyntaxException
- if the regular expression's syntax is invalidsplitEachLine(java.io.Reader, java.lang.String, groovy.lang.Closure)
public static <T> T splitEachLine(InputStream stream, Pattern pattern, Closure<T> closure) throws IOException
stream
- an InputStreampattern
- the regular expression Pattern for the delimiterclosure
- a closureIOException
- if an IOException occurs.splitEachLine(java.io.Reader, java.util.regex.Pattern, groovy.lang.Closure)
public static String readLine(Reader self) throws IOException
self
- a ReaderIOException
- if an IOException occurs.public static List<String> readLines(InputStream stream) throws IOException
stream
- a streamIOException
- if an IOException occurs.readLines(java.io.Reader)
public static List<String> readLines(InputStream stream, String charset) throws IOException
stream
- a streamcharset
- opens the stream with a specified charsetIOException
- if an IOException occurs.readLines(java.io.Reader)
public static List<String> readLines(Reader reader) throws IOException
reader
- a ReaderIOException
- if an IOException occurs.public static String getText(InputStream is) throws IOException
is
- an input streamIOException
- if an IOException occurs.public static String getText(InputStream is, String charset) throws IOException
is
- an input streamcharset
- opens the stream with a specified charsetIOException
- if an IOException occurs.public static String getText(Reader reader) throws IOException
reader
- a Reader whose content we want to readIOException
- if an IOException occurs.getText(java.io.BufferedReader)
public static String getText(BufferedReader reader) throws IOException
reader
- a BufferedReader whose content we want to readIOException
- if an IOException occurs.public static byte[] getBytes(InputStream is) throws IOException
is
- an input streamIOException
- if an IOException occurs.public static void setBytes(OutputStream os, byte[] bytes) throws IOException
os
- an output streambytes
- the byte[] to write to the output streamIOException
- if an IOException occurs.public static void writeLine(BufferedWriter writer, String line) throws IOException
writer
- a BufferedWriterline
- the line to writeIOException
- if an IOException occurs.public static Iterator<String> iterator(Reader self)
self
- a Reader objectBufferedReader.readLine()
public static Iterator<Byte> iterator(InputStream self)
self
- an InputStream objectpublic static Iterator<Byte> iterator(DataInputStream self)
self
- a DataInputStream objectpublic static BufferedReader newReader(InputStream self)
self
- an input streampublic static BufferedReader newReader(InputStream self, String charset) throws UnsupportedEncodingException
self
- an input streamcharset
- the charset for this input streamUnsupportedEncodingException
- if the encoding specified is not supportedpublic static PrintWriter newPrintWriter(Writer writer)
writer
- a Writerpublic static PrintWriter newPrintWriter(OutputStream stream)
stream
- an OutputStreampublic static <T> T withPrintWriter(Writer writer, Closure<T> closure) throws IOException
writer
- a writerclosure
- the closure to invoke with the PrintWriterIOException
- if an IOException occurs.public static <T> T withPrintWriter(OutputStream stream, Closure<T> closure) throws IOException
stream
- an OutputStreamclosure
- the closure to invoke with the PrintWriterIOException
- if an IOException occurs.public static <T> T withWriter(Writer writer, Closure<T> closure) throws IOException
writer
- the writer which is used and then closedclosure
- the closure that the writer is passed intoIOException
- if an IOException occurs.public static <T> T withReader(Reader reader, Closure<T> closure) throws IOException
reader
- the reader which is used and then closedclosure
- the closure that the writer is passed intoIOException
- if an IOException occurs.public static <T,U extends InputStream> T withStream(U stream, Closure<T> closure) throws IOException
stream
- the stream which is used and then closedclosure
- the closure that the stream is passed intoIOException
- if an IOException occurs.public static <T> T withReader(InputStream in, Closure<T> closure) throws IOException
in
- a streamclosure
- the closure to invoke with the InputStreamIOException
- if an IOException occurs.InputStreamReader
public static <T> T withReader(InputStream in, String charset, Closure<T> closure) throws IOException
in
- a streamcharset
- the charset used to decode the streamclosure
- the closure to invoke with the readerIOException
- if an IOException occurs.InputStreamReader
public static <T> T withWriter(OutputStream stream, Closure<T> closure) throws IOException
stream
- the stream which is used and then closedclosure
- the closure that the writer is passed intoIOException
- if an IOException occurs.withWriter(java.io.Writer, groovy.lang.Closure)
public static Writer newWriter(OutputStream stream)
stream
- the stream which is used and then closedpublic static <T> T withWriter(OutputStream stream, String charset, Closure<T> closure) throws IOException
stream
- the stream which is used and then closedcharset
- the charset usedclosure
- the closure that the writer is passed intoIOException
- if an IOException occurs.withWriter(java.io.Writer, groovy.lang.Closure)
public static Writer newWriter(OutputStream stream, String charset) throws UnsupportedEncodingException
stream
- the stream which is used and then closedcharset
- the charset usedUnsupportedEncodingException
- if an encoding exception occurs.public static <T,U extends OutputStream> T withStream(U os, Closure<T> closure) throws IOException
os
- the stream which is used and then closedclosure
- the closure that the stream is passed intoIOException
- if an IOException occurs.public static void eachByte(InputStream is, Closure closure) throws IOException
is
- stream to iterate over, closed after the method callclosure
- closure to apply to each byteIOException
- if an IOException occurs.public static void eachByte(InputStream is, int bufferLen, Closure closure) throws IOException
is
- stream to iterate over, closed after the method call.bufferLen
- the length of the buffer to use.closure
- a 2 parameter closure which is passed the byte[] and a number of bytes successfully read.IOException
- if an IOException occurs.public static void transformChar(Reader self, Writer writer, Closure closure) throws IOException
self
- a Reader objectwriter
- a Writer to receive the transformed charactersclosure
- a closure that performs the required transformationIOException
- if an IOException occurs.public static void transformLine(Reader reader, Writer writer, Closure closure) throws IOException
reader
- Lines of text to be transformed. Reader is closed afterwards.writer
- Where transformed lines are written. Writer is closed afterwards.closure
- Single parameter closure that is called to transform each line of
text from the reader, before writing it to the writer.IOException
- if an IOException occurs.public static void filterLine(Reader reader, Writer writer, Closure closure) throws IOException
reader
- a reader, closed after the callwriter
- a writer, closed after the callclosure
- the closure which returns booleansIOException
- if an IOException occurs.public static Writable filterLine(Reader reader, Closure closure)
true
if the line should be passed to the writer.reader
- this readerclosure
- a closure used for filteringpublic static Writable filterLine(InputStream self, Closure predicate)
true
if the line should be passed to the writer.self
- an input streampredicate
- a closure which returns boolean and takes a linefilterLine(java.io.Reader, groovy.lang.Closure)
public static Writable filterLine(InputStream self, String charset, Closure predicate) throws UnsupportedEncodingException
true
if the line should be passed to the writer.self
- an input streamcharset
- opens the stream with a specified charsetpredicate
- a closure which returns boolean and takes a lineUnsupportedEncodingException
- if the encoding specified is not supportedfilterLine(java.io.Reader, groovy.lang.Closure)
public static void filterLine(InputStream self, Writer writer, Closure predicate) throws IOException
true
if the line should be passed to the
writer.self
- the InputStreamwriter
- a writer to write output topredicate
- a closure which returns true if a line should be acceptedIOException
- if an IOException occurs.filterLine(java.io.Reader, java.io.Writer, groovy.lang.Closure)
public static void filterLine(InputStream self, Writer writer, String charset, Closure predicate) throws IOException
true
if the line should be passed to the
writer.self
- the InputStreamwriter
- a writer to write output tocharset
- opens the stream with a specified charsetpredicate
- a closure which returns true if a line should be acceptedIOException
- if an IOException occurs.filterLine(java.io.Reader, java.io.Writer, groovy.lang.Closure)
public static <T,U extends Closeable> T withCloseable(U self, Closure<T> action) throws IOException
self
- the Closeableaction
- the closure taking the Closeable as parameterIOException
- if an IOException occurs.