FileStream.Flush メソッド
ストリームに対応するすべてのバッファをクリアし、バッファ内のデータを基になるデバイスに書き込みます。
Overrides Public Sub Flush()
[C#]
public override void Flush();
[C++]
public: void Flush();
[JScript]
public override function Flush();
例外
例外の種類 | 条件 |
---|---|
IOException | I/O エラーが発生しました。 |
ObjectDisposedException | ストリームが閉じられました。 |
解説
このメソッドは、 Flush をオーバーライドします。
ストリームをフラッシュしても、 Flush または Close を明示的に呼び出さない限り、そのストリームの基になるエンコーダはフラッシュされません。 AutoFlush を true に設定すると、データがバッファからストリームにフラッシュされますが、エンコーダの状態はフラッシュされません。これにより、エンコーダの状態 (一部の文字) を維持できるため、次のブロックの文字を正確にエンコードできるようになります。この動作は、一部の文字をエンコードするためにはエンコーダがあらかじめその文字に隣接する文字を受け取っておく必要がある UTF8 および UTF7 に対して有効です。
バッファは読み取りまたは書き込みに使用できるため、 Flush は次の 2 つの機能を実行します。
- 以前にバッファに書き込まれたデータをファイルにコピーし、エンコーダ状態だけを残し、バッファをクリアします。
- CanSeek が true で、データが以前に読み取りのためにファイルからバッファにコピーされた場合、ファイルの現在位置は、バッファ内の読み取られていないバイト数によりデクリメントされます。次に、バッファはクリアされます。
使用例
[Visual Basic, C#, C++] 次のコード例は 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.")
[C#]
// 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.");
}
[C++]
// 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(
recordNumber.ToString()), 0, byteCount);
fileStream->Flush();
Console::WriteLine(
S"Record has been updated.");
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
参照
FileStream クラス | FileStream メンバ | System.IO 名前空間 | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み