2016-11-05 5 views
-1

バッファされたストリームを使用すると、たとえばFileOutputStreamとなります。java IOストリームをフラッシュするとき何が起こるか

BufferedOutputStream bf = new BufferedOutputStream(new FileOutputStream(fileName)); 

1ストリームに32のバイトを書き込み、その後flush()メソッドを呼び出すとしましょう。他のStackOverflowの回答によると、32バイトはOSメモリに渡されます。

これが本当であれば、OSに依存していないのでしょうか?例えばこれをWindows上で実行している場合は、ファイルデータを管理するためのシステムキャッシュもあります。 OSがファイルにそのデータをフラッシュするのを待つ必要があるのではないでしょうか。それはそれらの32バイトが実際にディスクに書き込まれる点です。または、私はここで間違っていますか?

答えて

0

ストリームに32バイトを書き込み、それ以降はflush()メソッドを呼び出します。他のStackOverflowの回答によると、32バイトはOSメモリに渡されます。

あなたが探している単語は、通常のwrite() APIまたは同等のものによって「書かれています」。

これが真であれば、OSに依存していないのでしょうか?例えばこれをWindows上で実行している場合は、ファイルデータを管理するためのシステムキャッシュもあります。 OSがファイルにそのデータをフラッシュするのを待つ必要があるのではないでしょうか。それはそれらの32バイトが実際にディスクに書き込まれる点です。または、私はここで間違っていますか?

あなたは間違っています。起こることはすべてwrite()です。

+0

ahaなので、flushを呼び出すと、データがOSメモリに書き込まれ、このデータをディスクに書き込むようにOSに通知されますか? –

+0

'起こっていることのすべての部分は、 'write()'で分かりますか? – EJP

+0

私はこの質問を言い換えて、Javaで何を書いているのですか? JVMのメモリ空間から直接ディスクに書き込むか?つまり、JVMはディスクへの書き込みを行いますか? –

関連する問題