Streamクラスはすべてのストリームの基本となる抽象型で、より具体的なストリームはこのクラスから継承して実装されます。 例えば、ファイルを開いて読み書きするためのクラスにFileStreamクラスがありますが、これはStreamクラスから派生したものです。
FileStreamを使ってファイルからデータを読み込む
using System;
using System.IO;
class Sample {
static void Main()
{
// ファイルsample.datを開き、読み取りアクセスを行うためのFileStreamを作成する
using (var stream = new FileStream("sample.dat", FileMode.Open, FileAccess.Read)) {
// 読み込んだデータを格納するためのバッファ
var buffer = new byte[4];
// FileStreamから4バイト読み込みバッファに格納する
stream.Read(buffer, 0, 4);
// 読み込んだデータをInt32(int)に変換して表示する
var number = BitConverter.ToInt32(buffer, 0);
Console.WriteLine(number);
}
}
}
上記の例のようにStreamクラスに用意されているメソッドを使うことによってデータの読み書きができます。 ただ、Streamクラス単体ではバイト単位・バイナリレベルでの読み書きしかできないので、例えば数値を扱うにはBitConverterクラスを使って読み書きの度に型変換を行うといったことをする必要があります。