[解決済み] Apache commons-io IOUtils.closeQuietlyを使用しても大丈夫でしょうか?
2022-02-09 09:49:52
質問
このコードは
BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt"));
try {
bw.write("test");
} finally {
IOUtils.closeQuietly(bw);
}
安全かどうか?私の理解では、BufferedWriterを閉じるとき、そのバッファを基礎ストリームにフラッシュし、エラーにより失敗する可能性があります。しかし、IOUtils.closeQuietly APIは、例外があっても無視されると言っています。
IOUtils.closeQuietlyによって、データ損失が気づかれない可能性はありますか?
解決方法は?
のjavadocによると、コードは次のようになります。
closeQuietly()
:
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter("test.txt"));
bw.write("test");
bw.flush(); // you can omit this if you don't care about errors while flushing
bw.close(); // you can omit this if you don't care about errors while closing
} catch (IOException e) {
// error handling (e.g. on flushing)
} finally {
IOUtils.closeQuietly(bw);
}
closeQuietly()
を呼び出す代わりに、一般的な使用を意図したものではありません。
close()
を直接クローサブルにすることができます。その意図された使用例は、最終ブロックの中でクローズを確実にすることです。
つまり、もしあなたが
close()
または
flush()
の場合、通常の方法で処理する必要があります。追加
closeQuietly()
は、フラッシュが失敗し、try-block で close が呼ばれなかった場合などに、close を確実にするためのものです。
関連
-
[解決済み】HTTPステータス 405 - リクエストメソッド「POST」はサポートされていません (Spring MVC)
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] java.net.URLConnectionを使用してHTTPリクエストを発生させ処理する方法
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み] Javaにおける例外処理によるパフォーマンスへの影響とは?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み】Apache Camelとは一体何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み】"実引数リストと形式引数リストの長さが異なる"
-
[解決済み】javaで指定されたファイルが見つからない
-
[解決済み] hibernateでResultSetを抽出できない。
-
[解決済み] hibernate のプロパティが見つかりません。
-
[解決済み】Javaでユーザー入力を待機させる方法
-
[解決済み】Eclipseで「公開型 <<classname>> は独自のファイルで定義する必要があります」エラー【重複あり
-
[解決済み】純粋なJUnitテストにVisibleForTestingを使用する方法
-
[解決済み】Javaの未処理例外について
-
[解決済み】Java: GZIPInputStreamの作成に失敗しました。GZIP形式ではありません