2011-12-04 7 views
2

私はパラメータとしてストリーム(入力用と出力用)を持つ関数を持っています。ストリームが非常に大きくなる可能性があるのは暗号機能です。しかし、ストリーム、その関数の必要性は、ファイルフィールドである全体のファイルではありません。どのように私はファイルフィールド(それは非常に大きなMemoryStreamsなど)ストリームに置くことができますか?私の悪い英語のために申し訳ありません。C#のファイルフィールドからのストリーム

+1

あなたは、「ファイルのフィールド」 –

+0

ファイルの一部とはどういう意味ですか。私の場合は、ファイルの "中間"です。その前にいくつかのデータがあります。 – Anton

答えて

0

あなたが意味する場合は、ファイル(または任意の他のストリーム)の一部でストリームを供給するためmeed、あなたは一般的に2つのアプローチのいずれかを使用します:ストリームクラス:サブを作成

  • を内部ストリームをカプセル化(デコレート)し、読み込まれたデータ量を追跡し、コンストラクタで提供される "n"バイトの読み取りのみを許可し、読み込み時に0を返します(また、バイトおよび残りのバイト)
  • コードを書き込んで、内部的にデータをいくつかの上限で追跡し、単にオーバーリードしないようにしますs

最初のコードは、ストリームを既存のコード/ライブラリに渡す必要がある場合に便利です。

どちらの場合でも、IMOはストリームを設定するコードで「あらかじめ」データを心配する必要があります。

編集:ここで私が以前書いた一つだ:http://protobuf-net.googlecode.com/svn/branches/v1/protobuf-net/SubStream.cs

関連する問題