- PR -

「フラッシュする」とは?

1
投稿者投稿内容
Js
常連さん
会議室デビュー日: 2002/05/28
投稿数: 25
投稿日時: 2002-06-17 18:24
APIドキュメントでPrintWriterクラスについて調べるため下のドキュメントを見て
みたのですが、「フラッシュする」の意味が分かりません。辞書で調べたところ、
「トイレの水を流す」などで、よく分かりませんでした。「フラッシュする」について
ご存知の方がいらっしゃいましたら、教えていただけないでしょうか。
宜しくお願いいたします。

【APIドキュメント】
PrintWriter
public PrintWriter(OutputStream out,
boolean autoFlush)
既存の OutputStream から新しい PrintWriter を作成します。この簡易コンストラクタでは、必要な中間の OutputStreamWriter を作成します。これにより、デフォルトの文字エンコーディングを使って文字をバイトに変換します。
パラメータ:
out - 出力ストリーム
autoFlush - boolean 値。値が true の場合、println() メソッドでは出力バッファをフラッシュする
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2002-06-17 19:11
PrintWriterなどで物を書き出すときには、内容が一旦バッファと呼ばれるメモリに書かれます。(論理出力動作ともいう) バッファが満杯になると自動的に蓄えられた内容はHDDなどの物理的装置に書き出されます。

このとき、バッファが満杯になっていなくてもバッファの内容を物理的記憶装置に書き込むよう指示したい場合にはバッファの内容を「フラッシュ」するわけです。

例えば、ファイルに書き込むとき、一行ずつ必ずファイルに書き込まれるようにしたい場合は:
コード:

BufferedWriter writer = new BufferedWriter(new FileWriter("test.txt"));
while(条件)
{
String st = 一行の内容;
writer.write(st);
writer.flush();
}
writer.close();


という風にします。flush()がないと、いつデータがファイルに書き込まれるか定かではありません。flush()を明示的に呼ぶことで、各行がファイルに書き出されることを保障します。

庭に水を撒く時、水を一滴、一滴運ぶより、バッファと呼ばれるバケツが一杯になるまで待った方が効率的だということです。バケツが一杯になるのを待つのが「バッファリング」。バケツの中の水を庭に撒く動作が「フラッシュ」です。

P.S. ちなみにトイレの水を流すも「flush」です。

[ メッセージ編集済み 編集者: H2 編集日時 2002-06-17 19:22 ]
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2002-06-17 19:27
追記:

close()を呼ぶと自動的にflush()が呼ばれます。(java.io.WriterのAPI Docを参照のこと)
flush()やclose()をしないでアプリケーションを終了すると、書き込んだ内容が反映されないことがあります。Writerの使用が終わったらclose()を忘れずに。
Junbow
ぬし
会議室デビュー日: 2002/01/24
投稿数: 373
お住まい・勤務地: saga.jp
投稿日時: 2002-06-17 20:43
 よくカメラのフラッシュと勘違いされている方がいますが、英語表記が違いますね(^^; 確かに、電気を溜めて放電しますが・・・。

 ところで、こういう専門用語っぽい使われ方をする単語ですけど、お手持ちの辞書で調べるだけでなく、googleで打ち込んで検索してみたり、gooのweb辞書で調べてみると、すぐに答えがでてきますよ(^^)
Js
常連さん
会議室デビュー日: 2002/05/28
投稿数: 25
投稿日時: 2002-06-22 00:27
H2さん、Junbowさん、どうもありがとうございます。
フラッシュの意味が理解できました。
1

スキルアップ/キャリアアップ(JOB@IT)