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
        }
    }
}

もう 1 つの方法は、@Thilo がコメントで提案したように BufferedReader を使用することです。これも、保持したい機能によって異なります。

BufferedWriter のインスタンスを使用する場合は、IOException をスローする write() メソッドを使用する必要があります。それらの詳細については、こちらの javadocs を参照してください

于 2012-07-04T04:21:06.220 に答える