Java IO: PipedWriter
Jakob Jenkov |
The Java PipedWriter
class (java.io.PipedWriter
) makes it possible to write to a Java pipe
as a stream of characters. In that respect the PipedWriter
works much like a
PipedOutputStream
except that a PipedOutputStream
is
byte based, whereas a PipedWriter
is character based. The PipedWriter
is intended for
writing text, in other words.
Normally a Java PipedWriter
is connected to a PipedReader
.
And often the PipedWriter
and the PipedReader
are used by different threads.
PipedWriter Example
Here is a simple Java PipedWriter
example:
PipedWriter pipedWriter = new PipedWriter(); while(moreData()) { int data = getMoreData(); pipedWriter.write(data); } pipedWriter.close();
Note: The proper exception handling has been skipped here for the sake of clarity. To learn more about correct exception handling, go to Java IO Exception Handling.
write()
The write()
method of a PipedWriter
takes an int which contains the byte value of the
byte to write. There are also versions of the write()
method that take a String
, char array etc.
Java IO Pipes
The PipedWriter
must always be connected to a PipedReader
. When connected
like that, they form a Java pipe. To learn more about Java pipes, go to Java IO: Pipes.
Closing a PipedWriter
When you are finished writing characters to a Java PipedWriter
you should remember to close it.
Closing a PipedWriter
is done by calling its close()
method. Here is how
closing a Java PipedWriter
looks:
pipedWriter.close();
You can also use the try-with-resources construct
introduced in Java 7. Here is how to use and close a PipedWriter
looks with the try-with-resources
construct:
try(PipedWriter pipedWriter = new PipedWriter(){ pipedWriter.write("data 1"); pipedWriter.write("data 2"); pipedWriter.write("data 3"); }
Notice how there is no longer any explicit close()
method call to the PipedWriter
instance.
The try-with-resources construct takes care of that.
Tweet | |
Jakob Jenkov |