FileStream.Flush 方法

定义

清除此流的缓冲区,并导致任何缓冲数据写入文件。

重载

名称 说明
Flush()

清除此流的缓冲区,并导致任何缓冲数据写入文件。

Flush(Boolean)

清除此流的缓冲区,并导致任何缓冲数据写入文件,并清除所有中间文件缓冲区。

Flush()

清除此流的缓冲区,并导致任何缓冲数据写入文件。

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

例外

出现 I/O 错误。

流已关闭。

示例

此代码示例是〈c0〉方法的一个较大示例的一部分。

// 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 或释放对象,否则不会刷新流的编码器。 true设置为StreamWriter.AutoFlush表示数据将从缓冲区刷新到流,但不会刷新编码器状态。 这使编码器能够保持其状态(部分字符),以便它可以正确编码下一个字符块。 此方案影响 UTF8 和 UTF7,其中某些字符只能在编码器接收相邻字符或字符后进行编码。

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

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

  • 如果 BufferedStream.CanSeek 之前 true 将数据从文件复制到缓冲区进行读取,则文件中的当前位置将按缓冲区中未读字节数递减。 然后清除缓冲区。

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

另请参阅

适用于

Flush(Boolean)

清除此流的缓冲区,并导致任何缓冲数据写入文件,并清除所有中间文件缓冲区。

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

参数

flushToDisk
Boolean

true 刷新所有中间文件缓冲区;否则,为 false.

注解

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

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

另请参阅

适用于