0

ネットワーク ドライブにファイルを作成し、そこにデータを追加しています。そのファイルへの書き込みに時々失敗します。データを保存するたびにファイルにアクセスできるかどうかを確認する良い方法はありますか、それともデータが保存されたかどうかを確認する方法はありますか?

編集:現在、コードで PrintStream を使用して try-catch ブロックを使用しています:

        try
        {
            logfile = new File(new File(isic_log), "log_" + production);
            //nasty workaround - we'll have a file the moment we assign an output stream to it
            if (!logfile.exists())
            {
                    prodrow = production;
            }

            out = new FileOutputStream(logfile.getPath(), logfile.exists());
            p = new PrintStream(out);
            if (prodrow != "")
            {
                p.println (prodrow);
            }
            p.println (chip_code + ":" + isic_number);
            p.close();
        }
        catch (Exception e)
        {
                logger.info("Got exception while writing to isic production log: " + e.getMessage());
        }

それで、PrintStreamが問題になるのでしょうか? ( PrintWriter と PrintStream は決して IOExceptions をスローしません)

4

2 に答える 2

2

プレーンなBufferedWriterを使用し、必要に応じて自分で改行を追加します。


エラーが発生した場合、通常のFileOutputStream操作はIOExceptionをスローする必要があります。

AFAIK、唯一の例外は、例外をスローしないPrintWriterです。代わりに、checkError()を呼び出す必要がありますが、エラーが何であったか、またはいつ発生したかはわかりません。

この状況ではPrintWriterを使用しないことをお勧めします。

于 2011-05-04T08:50:30.223 に答える
1

これに対処する唯一の合理的な方法は、ファイルへの書き込みを試み、結果として生じる例外を適切な方法で処理することです。ネットワークの信頼性が低いため、I/O操作が成功するかどうかを事前に知ることはほとんど不可能です。

于 2011-05-04T08:49:40.377 に答える