2017-07-13 6 views
0

私はそれを読んで、ファイルライターを閉じることは少し重い操作ができます。だから、ファイルライターを常に開いたままにしてもよろしいですか?あなたはCommonsWareは、あなたの質問のコメントで指摘したように整合性を心配する必要はあり開いて、それを維持することによりファイルライターを常に開いたままにしてもよろしいですか?

+1

常に何がありますか? –

+4

どこを読んだのですか?実際にパフォーマンスの問題を解決していますか? – tnw

+0

k.krol:私はもしかしたらここにように、私はそれを読んでどこ覚えていない、頼む - すべての時間をTNWサービス – loki

答えて

2

。私がそうすることを見る唯一の理由は、正しい開封にかかる時間を短縮することでしょうか?それは安全性の観点から必要な時間ではありませんので、ファイルに積極的に書き込んだり、必要なときに再オープンしたりするのではなく、アプリの生涯にわたってオープンにしておくほうがずっと良いでしょう。

2

"すべての時間"がプログラムの持続時間を意味する場合、答えはyesです。ファイルライターを閉じる目的は、ファイルに書き込まれたすべてのデータがファイルに書き込まれるようにすることです。書き込み時には、I/O処理を高速化するための最適化が行われるため、OSは書き込み要求をしてキャッシュまたはバッファに書き込むことが多く、そのバッファがいっぱいになると、すべての内容が可能な数百ではなく、1つのI/Oとしてファイルします。ファイルライターを閉じると、フルにならないかもしれないが、バッファにファイルを書き込むようにOSに指示することで、このバッファをフラッシュします。ほとんどの場合、プログラムを終了するとすべての読者/ライターが自動的に閉じられますが、常に明示的に明示的に明示的に書くのがベストプラクティスです。

これは、すべてのライターをクローズされていないがないが、それはそうすることの理由の大部分です。クローズしている作家は、そのファイルをオープンしているチャンネルを終了させるので、セキュリティ上の理由から、使用していないときにライターを閉じるべきです。オープン/クローズを呼び出すのは高価な唯一の理由は、そうする際にI/Oを行うためです。だからあなたが有益になるであろうが、その作家の使い方の生涯に1つのオープンと1つのクローズを必要とするような気がしない、コールを排除することができれば(つまり、ループ内ではなくループ外でコールする)ことができます。

関連する問題