FileStream.Flush メソッド

定義

このストリームのバッファーをクリアして、バッファー内のデータがファイルに書き込まれるようにします。Clears buffers for this stream and causes any buffered data to be written to the file.

オーバーロード

Flush()

このストリームのバッファーをクリアして、バッファー内のデータがファイルに書き込まれるようにします。Clears buffers for this stream and causes any buffered data to be written to the file.

Flush(Boolean)

このストリームのバッファーをクリアして、バッファー内のデータがファイルに書き込まれるようにし、すべての中間ファイル バッファーもクリアします。Clears buffers for this stream and causes any buffered data to be written to the file, and also clears all intermediate file buffers.

Flush()

このストリームのバッファーをクリアして、バッファー内のデータがファイルに書き込まれるようにします。Clears buffers for this stream and causes any buffered data to be written to the file.

public:
 override void Flush();
public override void Flush ();
override this.Flush : unit -> unit
Public Overrides Sub Flush ()

例外

I/O エラーが発生しました。An I/O error occurred.

ストリームは閉じられています。The stream is closed.

このコード例は、Lock メソッド用に提供されている大規模な例の一部です。This code example is part of a larger example provided for the Lock method.

// Update the file.
case 'W':
   try
   {
      fileStream->Seek( textLength, SeekOrigin::Begin );
      fileStream->Read( readText, textLength - 1, byteCount );
      tempString = gcnew String( uniEncoding->GetChars( readText, textLength - 1, byteCount ) );
      recordNumber = Int32::Parse( tempString ) + 1;
      fileStream->Seek( textLength, SeekOrigin::Begin );
      fileStream->Write( uniEncoding->GetBytes( recordNumber.ToString() ), 0, byteCount );
      fileStream->Flush();
      Console::WriteLine( "Record has been updated." );
   }
// Update the file.
case 'W':
    try
    {
        fileStream.Seek(textLength, 
            SeekOrigin.Begin);
        fileStream.Read(
            readText, textLength - 1, byteCount);
        tempString = new String(
            uniEncoding.GetChars(
            readText, textLength - 1, byteCount));
        recordNumber = int.Parse(tempString) + 1;
        fileStream.Seek(
            textLength, SeekOrigin.Begin);
        fileStream.Write(uniEncoding.GetBytes(
            recordNumber.ToString()), 
            0, byteCount);
        fileStream.Flush();
        Console.WriteLine(
            "Record has been updated.");
    }
' Update the file.
Case "W"C
    Try
        aFileStream.Seek(textLength, _
            SeekOrigin.Begin)
        aFileStream.Read( _
            readText, textLength - 1, byteCount)
        tempString = New String( _
            uniEncoding.GetChars( _
            readText, textLength - 1, byteCount))
        recordNumber = _
            Integer.Parse(tempString) + 1
        aFileStream.Seek( _
            textLength, SeekOrigin.Begin)
        aFileStream.Write(uniEncoding.GetBytes( _
            recordNumber.ToString()), 0, byteCount)
        aFileStream.Flush()
        Console.WriteLine( _
            "Record has been updated.")

注釈

このメソッドは、Stream.Flush をオーバーライドします。This method overrides Stream.Flush.

FileStream.Flush メソッドを呼び出すと、オペレーティングシステムの i/o バッファーもフラッシュされます。When you call the FileStream.Flush method, the operating system I/O buffer is also flushed.

オブジェクトの Flush または dispose を明示的に呼び出す場合を除き、ストリームのエンコーダーはフラッシュされません。A stream's encoder is not flushed unless you explicitly call Flush or dispose of the object. StreamWriter.AutoFlushtrue に設定すると、バッファーからストリームにデータがフラッシュされますが、エンコーダーの状態はフラッシュされません。Setting StreamWriter.AutoFlush to true means that data will be flushed from the buffer to the stream, but the encoder state will not be flushed. これにより、エンコーダーは次の文字ブロックを正しくエンコードできるように、その状態 (部分文字) を保持できます。This allows the encoder to keep its state (partial characters) so that it can encode the next block of characters correctly. このシナリオは、エンコーダーが隣接する文字を受け取ると、特定の文字のみをエンコードできる UTF8 と UTF7 に影響します。This scenario affects UTF8 and UTF7 where certain characters can only be encoded after the encoder receives the adjacent character or characters.

バッファーは読み取りまたは書き込みのどちらにも使用できるため、Flush() は次の2つの関数を実行します。Because a buffer can be used for either reading or writing, Flush() performs the following two functions:

  • 以前にバッファーに書き込まれたデータはすべてファイルにコピーされ、エンコーダーの状態を除いてバッファーはクリアされます。Any data previously written to the buffer is copied to the file and the buffer is cleared except for its encoder state.

  • BufferedStream.CanSeektrue で、データが以前にファイルから読み取り用にバッファーにコピーされていた場合、ファイル内の現在の位置は、バッファー内の未読バイト数だけ減少します。If BufferedStream.CanSeek is true and data was previously copied from the file to the buffer for reading, the current position within the file is decremented by the number of unread bytes in the buffer. バッファーがクリアされます。The buffer is then cleared.

中間ファイルバッファー内のすべてのバッファーデータがディスクに書き込まれるようにするには、Flush(Boolean) メソッドのオーバーロードを使用します。Use the Flush(Boolean) method overload when you want to ensure that all buffered data in intermediate file buffers is written to disk.

こちらもご覧ください

Flush(Boolean)

このストリームのバッファーをクリアして、バッファー内のデータがファイルに書き込まれるようにし、すべての中間ファイル バッファーもクリアします。Clears buffers for this stream and causes any buffered data to be written to the file, and also clears all intermediate file buffers.

public:
 virtual void Flush(bool flushToDisk);
public virtual void Flush (bool flushToDisk);
override this.Flush : bool -> unit
Public Overridable Sub Flush (flushToDisk As Boolean)

パラメーター

flushToDisk
Boolean

すべての中間ファイル バッファーをフラッシュする場合は true。それ以外の場合は falsetrue to flush all intermediate file buffers; otherwise, false.

注釈

このオーバーロードは、中間ファイルバッファー内のすべてのバッファーデータがディスクに書き込まれるようにする場合に使用します。Use this overload when you want to ensure that all buffered data in intermediate file buffers is written to disk.

Flush メソッドを呼び出すと、オペレーティングシステムの i/o バッファーもフラッシュされます。When you call the Flush method, the operating system I/O buffer is also flushed.

こちらもご覧ください

適用対象