0

これを行う方法はありますか?

私は非常に長い間反復しなければならないプログラムをコーディングしています、そしてそうしている間、それはファイルに書き込むことになっています。プログラムを手動で終了したらすぐにストリームを閉じたいのですが、そうすることで、ストリームが閉じられていないためにデータが失われるリスクを回避できます。例外処理でこれを行う方法があるはずですが、よくわかりません。どんな種類の提案も大歓迎です!

ありがとうございました

4

3 に答える 3

2

主に:

try {
   startapp();
} finally {
   closeAll();
}

closeAll() では、安全なシャットダウンのために行うことを行います。finally ブロックのコードは、例外が発生した場合でも実行されます。

于 2012-12-09T23:34:18.693 に答える
1

例外を使用してプログラムの実行を制御する方法は、設計が不十分です。シャットダウンフックを使用する方がはるかに良いでしょう。

Runtime.getRuntime().addShutdownHook(new Thread() {
    @Override
    public void run() {
       // Close streams here
    }
});

これにより、ほとんどの通常のシャットダウンが正常に処理されますが、ハード停止(SIGKILL)の場合、シャットダウンフックの実行は保証されません。しかし、それは、finallyブロックを介してストリームを閉じようとした場合よりも悪くはありません。

于 2012-12-09T23:36:09.210 に答える
0

私は方法を発見しました!プログラムが終了するとストリームが自動的に閉じられることに気付かずに、これで多くの時間を失いました...

次のように、 write() メソッドの後に flush() メソッドを使用していなかったため、データは書き込まれませんでした。

out.write(line);
out.flush();

ご協力ありがとうございました

于 2012-12-09T23:45:27.983 に答える