• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイル操作時のclose処理の失敗とは?)

ファイル操作時のclose処理の失敗とは?

このQ&Aのポイント
  • ファイル操作時のclose処理の失敗とは、ファイル出力処理が終了する際に発生する例外のことです。
  • 具体的なケースとしては、バッファ書き込みをするクラスの場合にディスクの容量が足りなくて書き込みが失敗し、例外が発生することがあります。
  • 例外が発生した場合には、ログ出力以外での処理としては、エラーメッセージの表示や例外の再スローなどが考えられます。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8534/19401)
回答No.1

>close処理時に書込みが失敗して例外発生、ということは >十分にありうると思います。しかしFileOutputStreamでは関係ありません。 なんで関係無いって言える? クラスがバッファ書き込みをしなくたって、OSレベルでバッファリングしていたり、デバイスドライバレベルでバッファリングしていたり、BIOSレベルでバッファリングしていたら、closeの呼び出しでバッファをフラッシュしようとしてデバイスに書き込めなくて失敗する事がある。 「FileOutputStreamではバッファリングが関係ない」と断言出来るのは、アプリレベルでも、OSレベルでも、デバイスドライバレベルでも、BIOSレベルでも、バッファ無しで書き込みし、一切バッファリングしないように設定した時、だけだろう。 「ハードウェアの安全な取り外し」が何の為にあるのか考えてみるべし。 >・ファイル出力処理のclose時に例外が発生するのはどのような環境・ケースか 「アプリレベル以外の下層レベルで、誰かがバッファリングをしていて、close呼び出しによりバッファフラッシュを行ってみたら、書き出しに失敗してバッファをフラッシュ出来なかった場合」に発生する。 >・例外が発生した場合にはどんな処理をすべきか(ログ出力以外で) 「該当ファイルの削除を試みる」であろう。

mibusys
質問者

お礼

なるほど。参考になりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • APIのページ

    お世話になります。 Javaには「Java 2 Platform Standard Edition 5.0 API 仕様(http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html)」 PHPには「PHPマニュアル(http://jp.php.net/manual/ja/index.php)」というように、公式(?)のようなAPIのページがありますが、 perlにはそのようなオンラインで参照できるページはないのでしょうか。 関数を探す際等に利用できるページを探しているのですが、見つかりません。 ご存知の方がいらっしゃったらどうかお教えいただけないでしょうか。

    • ベストアンサー
    • Perl
  • file操作時のエラー

    現在、Eclipseを開発環境としたJavaでのファイル操作の勉強をしているのですがエラーが出て困っています。 さっそくですがソースを張らせていただきます。 import java.io.*; import java.text.*; import java.util.*; public class Hallo { public static void main(String[] args) { File file = new File("C:\\Tomcat 6.0\\webapps\\blog","coment.txt"); FileOutputStream fos = new FileOutputStream(file); OutputStreamWriter osw = new OutputStreamWriter(fos , "Windows-31J"); BufferedWriter bw = new BufferedWriter(osw); String msg = "abc"; bw.write(msg); bw.close(); osw.close(); fos.close(); } } この様なソースを書いたところEclipseのエディタ上で 処理されない例外の型 FileNotFoundException 処理されない例外の型 UnsupportedEncodingException 処理されない例外の型 IOException などのエラーがMain分中のほとんどの行で出てしまいます。 しかし、このプログラムをサーブレットとして実装して動作させた場合には特に問題なく動きます。 個人的には開発環境からくるエラーか、それとも別の何か根本的な所で自分が間違っているのではないかと考えています。 みなさんのお返事お待ちしております。

    • ベストアンサー
    • Java
  • API 仕様のダウンロードできませんか?

    JavaTM Platform, Standard Edition, v 1.3 API 仕様 (http://java.sun.com/j2se/1.3/ja/docs/ja/api/index.html) の一式をダウンロードできるサイトをご存知ありませんか? 圧縮ファイルで22MBぐらいのものらしいのですが・・・

    • ベストアンサー
    • Java
  • 今、SunのサイトのjavaAPIリファレンス見られますか?

    たとえば http://java.sun.com/j2ee/sdk_1.3/ja/techdocs/api/index.html とか、 http://java.sun.com/j2se/1.4/ja/docs/ja/api なんですが・・・。

    • ベストアンサー
    • Java
  • JDK1.5のjava.math.BigDecimal#toString

    JDK1.5のjava.math.BigDecimal#toStringについて教えて下さい。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/math/BigDecimal.html#toString() SunにDocumentがありますが、この説明にある「調整された指数」の算出の仕方がよくわからないので、どういうときに指数表示されるのかが分かりません。 例を示してわかりやすく説明していただけるとありがたいです。

  • publicがprotectedになった場合のプログラム修正

    JDK1.4から1.3にバージョンを落とす事になったのですが、java.util.Calendar.getTimeInMillisが publicでなくprotectedでした。 http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/util/Calendar.html#getTimeInMillis() したがって、他のパッケージからのアクセスできなくなってしまったのですが、こういう場合どのように対処すれば良いでしょうか?

    • ベストアンサー
    • Java
  • APIの読み方

    下記APIの読み方が分かりません。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Enumeration.html タイトルにEnumeration<E>とありますが、<E>とはどういう意味でしょうか? さらに http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/naming/NamingEnumeration.html を参照すると、概要の冒頭に public interface NamingEnumeration<T> extends Enumeration<T> とも書いてあります。先ほどはEnumeration<E>だったのが、Enumeration<T>と表記されており、何が何なのか混乱しています。 質問をまとめさせていだきますと、 1.Enumeration<E>の<E>とはどういう意味でしょうか? 2.NamingEnumerationでは、なぜEnumeration<T>なのか? 以上です。基本的すぎる内容な気がして申し訳ありませんが、宜しくお願い致します。

    • ベストアンサー
    • Java
  • FileWriterで8kb以上書き込むには?

    java初心者です。FileWriterで8kb以上ファイルに書き込めなくて困っています。 java.sun.comのサイトのページFileWriterクラスに書いてある詳細説明(http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/FileWriter.html) によるとFileWriterで書き込めるサイズはデフォルトで決まっているため、自分で値を指定しない限りあるサイズ以上はファイルに書き込めないそうですが、 その値の指定の仕方(ソースの書き方)が分かりません。 「これらの値を自分で指定するには、FileOutputStream 上に OutputStreamWriter を構築してください。」(引用) この意味が自分には全く分かりません。 実際に行き詰まっている所は... JTextArea htmlArea = new JTextArea(); FileWriter objFw = new FileWriter("ファイルの絶対パス"); ... ... ... objFw.write(htmlArea.getText());←ここで8kb以上ファイルに書き込めなくて困っています どのようにソースを書けば問題を解決出来ますでしょうか?

    • ベストアンサー
    • Java
  • APIリファレンス

    こんにちは。java初心者のokwebsamaです。 今回ここで質問というか相談というか・・・・ javaのAPIリファレンスのサイト↓ http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html よりわかりやすくクラスを説明してあるサイトどなたか知りませんか? 内容が難しくて書いてある意味がよくわかりません! 書籍などでもあったら教えて下さいm(--)m

    • ベストアンサー
    • Java
  • Visual C#でのメソッド

    Visual C# でプログラミングしようと思ったのですが、メソッドの一覧などはどこでわかるのでしょうか? たとえば、javaでならhttp://java.sun.com/j2se/1.3/ja/docs/ja/api/index.html このようなページを見てやってたのですが、 C#ではこういった情報の入手方法がわからず困っています。 わかるかたがいたら教えてください。