2014-07-15 3 views
0

C# 스트림의 일부 바이트를 읽은 다음 스트림을 나머지 스트림을 읽는 라이브러리 메서드로 전달해야합니다. 불행하게도이 메소드는 stream.Seek (0, SeekOrigin.Begin)을 호출한다. 따라서, 그것은 이해할 수없는 첫 번째 바이트를 읽습니다.C# 스트림의 현재 지점을 시작으로 지정하십시오.

스트림의 시작 부분을 현재 위치로 재설정 할 수 있습니까? 스트림의 전체 나머지를 MemoryStream으로 복사하고 싶지 않습니다. 스트림이 꽤 클 수도 있기 때문입니다.

+0

아니요. 당신이 할 수있는 것은 나중에 외부 메서드를 호출 한 후에 그것을 복원하기 위해 현재 위치를 저장하는 것입니다. –

답변

8

아니, 그건 ... 않습니다하지만 당신이 할 수있는 것은 어떤 Seek() 또는 Position 수정 ... 당신의 자신의 래퍼 원래 스트림에 대한 참조를 유지 스트림을 생성하고, 그것을 대의원 모든 통화 아무것도 없다 적절하게 전화한다. 당신의 목적을 위해, 더 단순한 호출 (예 : 비동기 지원)을 간단하게하기 위해 NotImplementedException을 던져 볼 수 있습니다.

+2

데코레이터 패턴입니까? –

+0

좋아, 많이 thx! 나는 더 쉬운 방법이 있기를 바랐다. ... – Matthias

+1

@KokaChernov : 네. –

관련 문제