2010-05-18 73 views
1

,我使用的減壓API具有以下API:創建墊片流

Decode(Stream inStream,Stream outStream) 

我想解決這個API創建的包裝,這樣我可以創建自己的Stream類提供瞭解碼的數據。

Stream decodedStream=new BlaDecodeStream(inStream); 

所以,我可以比以同樣的方式使用該流作爲參數傳遞給構造函數的XmlReader一個可能使用System.IO.Compression.GZipStream。據我所知,唯一的其他選項是將StreamStream流設置爲MemoryStream或FileStream並進入兩跳。我處理的文件非常多,所以這些選項都不是特別有吸引力。

在我重新發明車輪之前,是否有任何現有技術可以借鑑,或者我可能錯過了BCL中的某些東西? CircularStream實現here會去幫助,但我真的想找一些類似的東西,當流的內部緩衝區是'空'時,從它讀取和阻止時,會阻止(而不是over/underrun)內部緩衝區在寫入時已滿。

以這種方式,它可以用作參數outStream,並且同時(即從另一個線程)可以被XmlReader讀取。

回答