用什么代替PrintWriter?

时间:2012-07-04 04:01:54

标签: java

这是我的代码,我的代码非常简单,重点:

public void sendMessage(String message)
{
    writer.println(message);
    writer.flush();
}

我真的不喜欢使用PrintWriter,因为它倾向于吞下IOExceptions,这实际上是我用它除了发送字节数组之外唯一的东西。我可以使用哪些不会消耗IOExceptions并仍然会给我PrintWriter的功能?

2 个答案:

答案 0 :(得分:4)

我建议使用普通WriterBufferedWriter

public void writeMessage(BufferedWriter bw, String message) throws IOException {
    bw.write(message);
    bw.newline();
    bw.flush();
}

public void writeMessage(Writer writer, String message) throws IOException {
    writer.write(message);
    writer.write(System.lineSeparator());
    writer.flush();
}

但显然这取决于你想要保留PrintWriter的功能。

答案 1 :(得分:2)

如果要保留PrintWriter并检查是否发生了异常,可以使用PrintWriter的checkError()方法来执行此操作。例如,使用您自己的代码:

public void sendMessage(String message)
{
    try{
        writer.println(message);
    }finally{
           //checkError flushes the stream if it's not closed and checks its error state.
        if(writer.checkError()){ 
            //Your error handling code here
        }
    }
}

另一种方式是使用BufferedReader,正如@Thilo在他的评论中所建议的那样。它将再次取决于您希望保留的功能。

如果您使用BufferedWriter的实例,您将使用write()方法,这会抛出IOException。 Read more about them in the javadocs here