有没有一种方法可以测试PrintWriter是否已打开并准备输出,而无需对其进行写入?

ali*_*ind 5 java io printwriter

我正在JavaDoc中查找它们PrintWriter的基础及其底层Writerout字段),但没有找到任何方法来确认PrintWriter确实处于打开状态。虽然可以测试null-ness,但是不能测试是否已关闭流。您也可以checkError(),但是被关闭真的算是错误吗?

我不是通用Java的新手,但java.io一直对我感到迷茫。感谢您的帮助。

ug_*_*ug_ 6

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

考虑转移到一个不同的类,它会在写入数据时抛出错误,然后您可以捕获它们并确定流的状态。

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

private class StatePrintWriter extends PrintWriter {

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


    public boolean isOpen() {
        return out != null;
    }
}
Run Code Online (Sandbox Code Playgroud)