FileStream.Flush 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
清除此流的缓冲区,使得所有缓冲数据都写入到文件中。
重载
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.CanSeek 为
true
,并且数据以前已从文件复制到缓冲区进行读取,则文件中的当前位置会因缓冲区中未读字节数而递减。 然后清除缓冲区。
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 缓冲区。