2011-12-04 48 views
2

我有流(一個用於輸入,另一個用於輸出)作爲參數的函數。這是密碼功能,因此流可能非常大。但是流,那個函數需要的不是整個文件它就是文件域。所以,我怎麼可以把文件域(它可能很大所以沒有MemoryStreams等)在流中?對不起,我的英語不好。從C#中的文件字段流#

+1

你是什麼意思的「文件字段」 –

+0

文件的一部分做。在我的情況下,在文件的「中間」。所以一些數據在它之前和之後。 – Anton

回答

0

如果你的意思是你MEED提供一個流是一個文件的部分(或任何其他流),那麼你通常會使用以下兩種方法之一:

  • 創建一個子:Stream類它封裝(裝飾)一個內部流並跟蹤有多少數據已被讀取,並且只允許讀取「n」個字節(在構造函數中提供),並且會從Read返回0一次消耗(還記得Max請求的字節和剩餘字節)
  • 編寫代碼,使其內部跟蹤某些上限的數據,並且根本不會過度讀取s

如果您需要將該Stream傳遞到預先存在的代碼/庫,第一個會很有用。

在這兩種情況下,設置流的代碼都應該擔心「之前」的數據,上面只是擔心沒有讀取太多。

編輯:這裏有一個我在前面寫道:http://protobuf-net.googlecode.com/svn/branches/v1/protobuf-net/SubStream.cs