2010-05-18 4 views
1

내가 사용하고 감압 API는 다음과 같은 API가 있습니다심 스트림을 생성

Decode(Stream inStream,Stream outStream) 

은 내가가 제공하는 내 자신의 Stream 클래스를 만들 수 있도록,이 API의 래퍼를 작성하고 싶습니다를 디코딩 된 데이터 나는보다 같은 방법으로 XmlReader를 생성자에 매개 변수로이 스트림을 사용할 수 있도록

Stream decodedStream=new BlaDecodeStream(inStream); 

하나는 System.IO.Compression.GZipStream을 사용할 수 있습니다. 내가 말할 수있는 한, 유일한 다른 옵션은 outStream 스트림을 MemoryStream 또는 FileStream으로 설정하고 두 개의 홉으로 이동하는 것입니다. 내가 다루는 파일은 엄청나므로이 옵션들 중 어느 것도 특히 매력적이지 않습니다.

바퀴를 다시 발명하기 전에 내가 그릴 수있는 선행 기술이 있습니까? 아니면 내가 놓친 BCL의 무언가가 있습니까? CircularStream 구현 인 here은 도움이 될 수있는 방법이 될 것입니다.하지만 스트림에서 내부 버퍼가 읽을 때 블록이 '비어있는'경우 블록을 덮을 수있는 비슷한 것을 찾고 있습니다 (오버/언더런과 반대). 쓰기 위해 내부 버퍼가 가득 찼습니다.

이 방법으로 이것은 outStream 매개 변수 역할을 할 수 있으며 동시에 (즉, 다른 스레드로부터) XmlReader에 의해 읽을 수 있습니다.

답변

1

잠시 전에 blocking stream reader에 대해 질문했습니다. 나는 제안 중 하나를 구현하고 잘 작동합니다.

관련 문제