我在JavaDoc中查找PrintWriter
及其基础Writer
(其out
字段),我看不出有任何方法可以确认PrintWriter是确实开放。虽然您可以测试null
- ness,但您无法测试是否已关闭流。你也可以checkError()
,但是被关闭真的被认为是一个错误?
我不是普通Java的新手,但java.io
一直对我很朦胧。谢谢你的帮助。
答案 0 :(得分:4)
我认为最好根据假设PrintWriter
处于您期望的状态来处理您的程序流程。 PrintWriter
是一种编写器,它不会给你错误,并且可以安全地编写而不会抛出异常。
考虑移动到另一个在编写数据时会引发错误的类,然后可以捕获它们并确定流的状态。
您始终可以实现自己的子类。变量out
是PrintWriter
类的受保护变量,在关闭时设置为null。我以方法PrintWriter.ensureOpen()
为基础,这是一个私有方法,所以你必须查看源代码才能找到它。
private class StatePrintWriter extends PrintWriter {
public StatePrintWriter(PrintWriter writer) {
super(writer);
}
public boolean isOpen() {
return out != null;
}
}