FileStream.Flush 方法

清除该流的所有缓冲区,使得所有缓冲的数据都被写入到基础设备。

**命名空间:**System.IO
**程序集:**mscorlib(在 mscorlib.dll 中)

语法

声明
Public Overrides Sub Flush
用法
Dim instance As FileStream

instance.Flush
public override void Flush ()
public:
virtual void Flush () override
public void Flush ()
public override function Flush ()

异常

异常类型 条件

IOException

发生 I/O 错误。

ObjectDisposedException

流已关闭。

备注

此方法重写 Flush

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

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

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

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

示例

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

' 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.")
// 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':
   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 = Int32.Parse(tempString)+1;
        fileStream.Seek(textLength, SeekOrigin.Begin);
        fileStream.Write(uniEncoding.GetBytes(
            (new Integer( recordNumber)).ToString()),
            0, byteCount);
        fileStream.Flush();
        Console.WriteLine("Record has been updated.");
    }

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

FileStream 类
FileStream 成员
System.IO 命名空间

其他资源

文件和流 I/O
如何:从文件读取文本
如何:向文件写入文本