1

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

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

我不太喜欢使用 PrintWriter 因为它往往会吞下 IOExceptions,这实际上是我使用它除了发送字节数组之外的唯一用途。我可以使用什么来代替不会消耗 IOExceptions 并且仍然会给我 PrintWriter 的功能?

4

2 回答 2

5

我建议使用普通Writer的或BufferedWriter

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你想要保留什么功能。

于 2012-07-04T04:33:13.137 回答
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。在此处的 javadocs 中阅读有关它们的更多信息

于 2012-07-04T04:21:06.220 回答