System.IO.FileStream.Flush 方法

方法描述

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

语法定义(C# System.IO.FileStream.Flush 方法 的用法)

public override void Flush()

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
返回值 void

提示和注释

此方法重写 Stream.Flush。

除非显式地调用 Flush 或 Stream.Close,否则,刷新流不会刷新其基础编码器。 将 StreamWriter.AutoFlush 设置为 true 意味着将数据从缓冲区刷新到流中,但不刷新编码器状态。 这将允许编码器保持其状态(不完全字符),以便它可以正确地对下一个字符块进行编码。 此方案影响 UTF8 和 UTF7,这二者中,某些字符只能在编码器收到相邻的一个或多个字符后才能进行编码。

因为缓冲区可用于读取或写入,所以 Flush 执行以下两个功能:

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

如果 BufferedStream.CanSeek 为 true 而且以前将数据从文件复制到缓冲区以进行读取,则文件内的当前位置会减少缓冲区中未读取的字节数。 然后清除缓冲区。

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

System.IO.FileStream.Flush 方法例子

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

// 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.");
    }

异常

异常 异常描述
IOException 发生了 I/O 错误。
ObjectDisposedException 流已关闭。

命名空间

namespace: System.IO

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。