有没有办法在不关闭底层流的情况下关闭Writer?

Mat*_*hew 5 java sockets io outputstream

我有一个套接字,我写了一些字符数据和一些原始字节数据.对于角色数据,使用a更容易PrintWriter.对于原始字节数据,更容易直接写入OutputStream.所以在我的代码中,我有这样的段:

Writer writer = new PrintWriter(outputStream);
writer.write(someText);
...
writer.flush();
// No call to writer.close(), because that would close the underlying stream.
Run Code Online (Sandbox Code Playgroud)

只要我Writer在开始以其他方式写入流后不小心写这个,这很好.但是我宁愿安全地知道IOException如果我不小心写了一个流,我会得到一个(就像我关闭它一样).

有没有办法明确地防止将来写入a Writer而不关闭其底层流?

use*_*421 9

为什么?close()只做两件事:(1)刷新编写器和(2)调用close()嵌套编写器.如果您不想要(2),请打电话给flush()自己,不要打电话close().


Per*_*ion 7

简单地说,不.编写Java io流类的方式,它们总是链接关闭操作.当然,您可以创建自己的编写器实现来覆盖此行为.