次の方法で共有


BufferedStream.Flush メソッド

ストリームに対応するすべてのバッファをクリアし、バッファ内のデータを基になるデバイスに書き込みます。

Overrides Public Sub Flush()
[C#]
public override void Flush();
[C++]
public: void Flush();
[JScript]
public override function Flush();

例外

例外の種類 条件
IOException データ ソースまたはリポジトリが開いていません。

解説

ファイルの作成およびテキストのファイルへの書き込みの例については、「 ファイルへのテキストの書き込み 」を参照してください。ファイルからのテキストの読み取りの例については、「 ファイルからのテキストの読み取り 」を参照してください。バイナリ ファイルの読み取りおよび書き込みの例については、「 新しく作成したデータ ファイルの読み取りと書き込み 」を参照してください。

ストリームをフラッシュしても、 Flush または Close を明示的に呼び出さない限り、そのストリームの基になるエンコーダはフラッシュされません。

BufferedStream(Stream, Int32) コンストラクタを使用して、 BufferedStream オブジェクトの作成時にバッファ サイズを指定した場合は、バッファ サイズに達したときに内容がフラッシュされます。たとえば、 BufferedStream bs = new BufferedStream(bs, 5) のようなコードでは、バッファ サイズが 5 バイトに達したときに内容がフラッシュされます。

BufferedStream のすべての読み取りメソッドと書き込みメソッドは、自動的にバッファを維持します。したがって、読み取りと書き込みを切り替えるときに、 Flush を呼び出す必要はありません。

使用例

[Visual Basic, C#, C++] 次のコード例は BufferedStream クラスの例の一部です。

 
' Send the data using the BufferedStream.
Console.WriteLine("Sending data using BufferedStream.")
startTime = DateTime.Now
For i As Integer = 1 To numberOfLoops
    bufStream.Write(dataToSend, 0, dataToSend.Length)
Next i

bufStream.Flush()
bufferedTime = DateTime.Now.Subtract(startTime).TotalSeconds
Console.WriteLine("{0} bytes sent In {1} seconds." & vbCrLf, _
    numberOfLoops * dataToSend.Length, _
    bufferedTime.ToString("F1"))

[C#] 
// Send the data using the BufferedStream.
Console.WriteLine("Sending data using BufferedStream.");
startTime = DateTime.Now;
for(int i = 0; i < numberOfLoops; i++)
{
    bufStream.Write(dataToSend, 0, dataToSend.Length);
}
bufStream.Flush();
bufferedTime = (DateTime.Now - startTime).TotalSeconds;
Console.WriteLine("{0} bytes sent in {1} seconds.\n",
    numberOfLoops * dataToSend.Length, 
    bufferedTime.ToString("F1"));

[C++] 
// Send the data using the BufferedStream.
Console::WriteLine(S"Sending data using BufferedStream.");
startTime = DateTime::Now;
for(int i = 0; i < numberOfLoops; i++)
{
    bufStream->Write(dataToSend, 0, dataToSend->Length);
}
bufStream->Flush();
bufferedTime = (DateTime::Now - startTime).TotalSeconds;
Console::WriteLine(S"{0} bytes sent in {1} seconds.\n",
    (numberOfLoops * dataToSend->Length).ToString(), 
    bufferedTime.ToString("F1"));

[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 ファミリ

参照

BufferedStream クラス | BufferedStream メンバ | System.IO 名前空間 | Close | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み