Java IO:PipedWriter

时间:2020-01-09 10:36:05  来源:igfitidea点击:

JavaPipedWriter类(java.io.PipedWriter)使得有可能以字符流的形式写入Java管道。在这方面," PipedWriter"的工作方式与" PipedOutputStream"的工作方式非常相似,只是" PipedOutputStream"是基于字节的,而" PipedWriter"是基于字符的。换句话说,PipedWriter是用于编写文本的。

通常,Java" PipedWriter"连接到" PipedReader"。通常," PipedWriter"和" PipedReader"被不同的线程使用。

PipedWriter示例

这是一个简单的JavaPipedWriter示例:

PipedWriter pipedWriter = new PipedWriter();

while(moreData()) {
  int data = getMoreData();
  pipedWriter.write(data);
}
pipedWriter.close();

注意:为清楚起见,此处已跳过适当的异常处理。要了解有关正确的异常处理的更多信息,请转到Java IO异常处理。

write()

PipedWriter的write()方法采用一个int,该int包含要写入的字节的字节值。还有一些write()方法的版本,它们带有String,char数组等。

Java IO管道

" PipedWriter"必须始终连接到" PipedReader"。当这样连接时,它们形成一个Java管道。要了解有关Java管道的更多信息,请转到Java IO:管道。

关闭PipedWriter

完成将字符写入JavaPipedWriter后,我们应该记住将其关闭。关闭PipedWriter是通过调用其close()方法来完成的。这是关闭JavaPipedWriter的样子:

pipedWriter.close();

我们还可以使用Java 7中引入的try-with-resources构造。这是如何使用try-with-resources构造使用和关闭PipedWriter外观的方法:

try(PipedWriter pipedWriter =
    new PipedWriter(){

    pipedWriter.write("data 1");
    pipedWriter.write("data 2");
    pipedWriter.write("data 3");

}

注意,如何不再对PipedWriter实例进行任何显式的close()方法调用。 try-with-resources构造可以解决这一问题。