Positionプロパティはストリーム内における現在の読み込み・書き込み位置を取得するためのプロパティですが、ランダムアクセスをサポートするストリームではPositionプロパティに値を設定することでその位置にシークすることができます。
Seekメソッドを使うことでもシークを行うことができます。 Seekメソッドでは、シーク先のオフセットoffsetとシークの原点originの二つを指定します。 originはSeekOrigin列挙体で指定し、その値によってoffsetの意味が次のように変わります。 また、offsetには負の値を指定することもできます。
SeekOrigin | 意味 | 指定例 |
---|---|---|
SeekOrigin.Begin | ストリームの先頭からoffset進めた位置にシークする (Position = offset) |
ストリームの先頭にシークする場合 Seek(0, SeekOrigin.Begin) ストリームの先頭から4バイト目にシークする場合 Seek(4, SeekOrigin.Begin) |
SeekOrigin.Current | ストリーム内の現在の読み込み・書き込み位置からoffset進めた位置にシークする (Position = Position + offset) |
現在位置から8バイト後方にシークする場合 Seek(8, SeekOrigin.Current) 現在位置から8バイト前方にシークする場合 Seek(-8, SeekOrigin.Current) |
SeekOrigin.End | ストリームの終端からoffset進めた位置にシークする (Position = Length + offset) |
ストリームの末尾にシークする場合 Seek(0, SeekOrigin.End) ストリームの末尾から4バイト手前にシークする場合 Seek(-4, SeekOrigin.End) |