次の方法で共有


BufferedStream.Close メソッド

ストリームを閉じ、現在のバッファ ストリームと関連付けられたリソース (特に、ソケットやファイル ハンドルなどのシステム リソース) を解放します。

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

例外

例外の種類 条件
IOException ストリームを閉じようとしている間にエラーが発生しました。

解説

以前にバッファに書き込まれたデータは、バッファ ストリームを閉じる前に基になるデータ ソースまたはリポジトリにコピーされます。したがって、 Close を呼び出す前に Flush を呼び出す必要はありません。 Close を呼び出した後に、バッファ ストリームを操作しようとすると例外が発生することがあります。

ストリームをフラッシュしても、 Flush または Close を明示的に呼び出さない限り、そのストリームの基になるエンコーダはフラッシュされません。 AutoFlushtrue に設定すると、データがバッファからストリームにフラッシュされますが、エンコーダの状態はフラッシュされません。これにより、エンコーダの状態 (一部の文字) を維持できるため、次のブロックの文字を正確にエンコードできるようになります。この動作は、一部の文字をエンコードするためにはエンコーダがあらかじめその文字に隣接する文字を受け取っておく必要がある UTF8 および UTF7 に対して有効です。

ストリームが閉じられた後でそのストリームを操作しようとすると、 ObjectDisposedException がスローされる場合があります。

使用例

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

 
' When bufStream is closed, netStream is in turn 
' closed, which in turn shuts down the connection 
' and closes clientSocket.
Console.WriteLine(vbCrLf & "Shutting down the connection.")
bufStream.Close()

[C#] 
// Create a NetworkStream that owns clientSocket and 
// then create a BufferedStream on top of the NetworkStream.
// Both streams are disposed when execution exits the
// using statement.
using(Stream 
    netStream = new NetworkStream(clientSocket, true),
    bufStream = 
          new BufferedStream(netStream, streamBufferSize))
{
    // Check whether the underlying stream supports seeking.
    Console.WriteLine("NetworkStream {0} seeking.\n",
        bufStream.CanSeek ? "supports" : "does not support");

    // Send and receive data.
    if(bufStream.CanWrite)
    {
        SendData(netStream, bufStream);
    }
    if(bufStream.CanRead)
    {
        ReceiveData(netStream, bufStream);
    }

    // When execution exits the using statement, netStream
    // is disposed, which in turn shuts down the connection 
    // and closes clientSocket.
    Console.WriteLine("\nShutting down the connection.");
}

[C++] 
// When bufStream is closed, netStream is in turn closed,
// which in turn shuts down the connection and closes
// clientSocket.
Console::WriteLine(S"\nShutting down connection.");
bufStream->Close();

[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 名前空間 | Flush | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み