Stream クラス

バイト シーケンスのジェネリック ビューを提供します。

この型のすべてのメンバの一覧については、Stream メンバ を参照してください。

System.Object
   System.MarshalByRefObject
      System.IO.Stream
         派生クラス

<Serializable>
MustInherit Public Class Stream   Inherits MarshalByRefObject   Implements IDisposable
[C#]
[Serializable]
public abstract class Stream : MarshalByRefObject, IDisposable
[C++]
[Serializable]
public __gc __abstract class Stream : public MarshalByRefObject,   IDisposable
[JScript]
public
   Serializable
abstract class Stream extends MarshalByRefObject implements   IDisposable

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

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

ストリームには次の 3 つの基本的な操作が含まれます。:

  1. ストリームからの読み込み。読み込みは、ストリームからデータ構造体 (バイト配列など) へのデータ転送です。
  2. ストリームへの書き込み。書き込みは、データ構造体からストリームへのデータ転送です。
  3. ストリームによるシークのサポート。シークとは、ストリーム内の現在位置を問い合せ、変更することです。シーク機能は、ストリームが持つバッキング ストアの種類によって異なります。たとえば、ネットワークのストリームは、現在位置という統一された概念を持たないため、通常はシークをサポートしません。

Stream は、すべてのストリームの抽象基本クラスです。ストリームは、ファイル、入出力デバイス、プロセス間通信パイプ、TCP/IP ソケットなど、バイト シーケンスの抽象化です。 Stream クラスとその派生クラスは、これらのさまざまな種類の入出力のジェネリック ビューを提供します。これにより、プログラマはオペレーティング システムや基になるデバイスに固有のディテールを分離します。

基になるデータ ソースやリポジトリによっては、ストリームがこれらの機能の一部だけをサポートする場合もあります。アプリケーションで CanRead プロパティ、 CanWrite プロパティ、および CanSeek プロパティを使用することにより、ストリームの機能を問い合わせることができます。

Read メソッドおよび Write メソッドはさまざまな形式でデータの読み取りと書き込みをします。シークをサポートするストリームの場合は、 Seek メソッドや SetLength メソッド、および Position プロパティや Length プロパティを使用して、ストリームの現在位置および長さを問い合わせ、変更します。

ストリームの実装によっては、パフォーマンスの向上のために、基になるデータをローカルでバッファリングする場合があります。このようなストリームでは、 Flush メソッドを使用して内部バッファをクリアし、すべてのデータが基になるデータ ソースやリポジトリに確実に書き込まれることを保証できます。

Stream に対して Close を呼び出すと、 Flush が呼び出されてバッファ内のすべてのデータがフラッシュされます。また、 Close によって、内部バッファリングに使用したファイル ハンドル、ネットワーク接続、メモリなどのオペレーティング システム リソースが解放されます。 BufferedStream クラスは、読み取りと書き込みのパフォーマンスを向上させるために、バッファリングされたストリームを別のストリームでラッピングする機能を提供します。

バッキング ストア (ビット バケット) なしのストリームが必要な場合は、 Null を使用します。

実装時の注意: Stream の派生クラスを実装するときは、 Read メソッドおよび Write メソッドの実装を提供する必要があります。非同期メソッド BeginReadEndReadBeginWrite 、および EndWrite は、同期メソッド Read および Write を使用して実装します。同様に、独自の Read および Write の実装は、非同期メソッドと共に正常に動作します。 ReadByte および WriteByte の既定の実装は、新しい単一要素のバイト配列を作成した後で、独自の Read および Write を呼び出します。 Stream から派生させるとき、内部バイト バッファを使用する場合は、内部バッファにアクセスするようにメソッドをオーバーライドすることを強くお勧めします。これにより、パフォーマンスが大幅に向上します。 CanReadCanSeekCanWriteFlushLengthPositionSeek 、および SetLength も実装する必要があります。

必要条件

名前空間: System.IO

プラットフォーム: 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

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

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