有没有办法测试PrintWriter是否已打开并准备输出,而无需写入?

时间:2014-01-09 19:03:46

标签: java io printwriter

我在JavaDoc中查找PrintWriter及其基础Writer(其out字段),我看不出有任何方法可以确认PrintWriter是确实开放。虽然您可以测试null - ness,但您无法测试是否已关闭流。你也可以checkError(),但是被关闭真的被认为是一个错误?

我不是普通Java的新手,但java.io一直对我很朦胧。谢谢你的帮助。

1 个答案:

答案 0 :(得分:4)

我认为最好根据假设PrintWriter处于您期望的状态来处理您的程序流程。 PrintWriter是一种编写器,它不会给你错误,并且可以安全地编写而不会抛出异常。

考虑移动到另一个在编写数据时会引发错误的类,然后可以捕获它们并确定流的状态。

您始终可以实现自己的子类。变量outPrintWriter类的受保护变量,在关闭时设置为null。我以方法PrintWriter.ensureOpen()为基础,这是一个私有方法,所以你必须查看源代码才能找到它。

private class StatePrintWriter extends PrintWriter {

    public StatePrintWriter(PrintWriter writer) {
        super(writer);
    }


    public boolean isOpen() {
        return out != null;
    }
}