ストリームからバイナリ・データを読み込み配列に格納するには?[C#、VB].NET TIPS

» 2010年03月04日 05時00分 公開
[遠藤孝信デジタルアドバンテージ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「.NET TIPS」のインデックス

連載目次

 バイナリ・データ(=テキスト以外のデータ)をネットワークなどから読み込んで処理したい場合、通常はストリームからバイナリ・データを読み込み、それをバイト配列に格納することになる。本稿では、その手順について解説する。

MemoryStreamクラスによるバッファリング

 ストリームからデータを読み込む際、あらかじめデータ全体の長さが分かっていれば、そのサイズのバイト配列を最初に作成し、データを順に読み込んでいくだけでよいが、すべてのストリームで事前にサイズが分かるわけではない(Streamクラス(System.IO名前空間)のすべての派生クラスがLengthプロパティをサポートしているわけではない)。

 このため、ストリームから少しずつデータを読み込みながらメモリ上に保存していき、最後にデータ全体をバイト配列に変換するというのが一般的な手順だ。

 メモリ上に少しずつデータをため込んでいくような処理には、MemoryStreamクラス(System.IO名前空間)が使える。これはメモリ領域をストリームとして扱うクラスで、Writeメソッドによりバイナリ・データの書き込みが行え、そのメモリ領域は必要に応じて自動的に拡張される。また、ToArrayメソッドにより、メモリ領域のデータをバイト配列として取得できる。

 以下のサンプル・プログラム内のReadBinaryDataメソッドは、MemoryStreamクラスを利用してストリームからバイナリ・データを読み込み、それをバイト配列として返す処理を記述した例である。MemoryStreamクラスのWriteメソッドの引数には、メモリ・ストリームに書き込むバイト配列、そのバイト配列内の開始位置、書き込むバイト数を指定する。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。