FileStream.Flush 方法

定义

清除此流的缓冲区,使得所有缓冲数据都写入到文件中。

重载

Flush()

清除此流的缓冲区,使得所有缓冲数据都写入到文件中。

Flush(Boolean)

清除此流的缓冲区,将所有缓冲数据都写入到文件中,并且也清除所有中间文件缓冲区。

Flush()

Source:
FileStream.cs
Source:
FileStream.cs
Source:
FileStream.cs

清除此流的缓冲区,使得所有缓冲数据都写入到文件中。

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

例外

出现 I/O 错误。

流已关闭。

示例

此代码示例是为 方法提供的更大示例的 Lock 一部分。

// 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.");
    }
| 'W' ->
    // Update the file.
    try

        fileStream.Seek(textLength, SeekOrigin.Begin) |> ignore
        fileStream.Read(readText, textLength - 1, byteCount) |> ignore
        tempString <- String(uniEncoding.GetChars readText, textLength - 1, byteCount)
        recordNumber <- Int32.Parse tempString + 1
        fileStream.Seek(textLength, SeekOrigin.Begin) |> ignore
        fileStream.Write(string recordNumber |> uniEncoding.GetBytes, 0, byteCount)
        fileStream.Flush()
        printfn "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

调用 FileStream.Flush 方法时,也会刷新操作系统 I/O 缓冲区。

除非显式调用 Flush 或释放对象,否则不会刷新流的编码器。 将 设置为 StreamWriter.AutoFlushtrue 表示数据将从缓冲区刷新到流,但不会刷新编码器状态。 这允许编码器将其状态保留 (部分字符) ,以便可以正确编码下一个字符块。 此方案会影响 UTF8 和 UTF7,其中某些字符只能在编码器收到相邻字符后进行编码。

由于缓冲区可用于读取或写入, Flush() 因此执行以下两个函数:

  • 之前写入缓冲区的任何数据将复制到文件,并且除其编码器状态外,缓冲区将被清除。

  • 如果 BufferedStream.CanSeektrue ,并且数据以前已从文件复制到缓冲区进行读取,则文件中的当前位置会因缓冲区中未读字节数而递减。 然后清除缓冲区。

Flush(Boolean)如果要确保将中间文件缓冲区中的所有缓冲数据写入磁盘,请使用 方法重载。

另请参阅

适用于

Flush(Boolean)

Source:
FileStream.cs
Source:
FileStream.cs
Source:
FileStream.cs

清除此流的缓冲区,将所有缓冲数据都写入到文件中,并且也清除所有中间文件缓冲区。

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;否则为 false

注解

如果要确保将中间文件缓冲区中的所有缓冲数据写入磁盘,请使用此重载。

调用 Flush 方法时,也会刷新操作系统 I/O 缓冲区。

另请参阅

适用于