2016-10-26 4 views
0

CopyTo 메서드를 사용하여 두 개 이상의 스트림 (또는 MemoryStream)을 병합 할 수 있습니까?CopyTo 메서드를 사용하여 두 스트림을 병합 할 수 있습니까?

예를 들어 두 개의 소스 스트림 s1과 s2가 있습니다. 대상 MemoryStream을 만듭니다.

MemoryStream omDest = new MemoryStream();

내가 하나의 스트림 모든 것이 괜찮 복사하는 경우 :

s1.CopyTo (omDest);

하지만 둘 다 복사하면 두 번째 파일이 첫 번째 파일을 덮어 씁니다.

귀하의 도움에 감사드립니다.

감사합니다. 당신은 다음과 같이 사용하는 CopyTo 후 처음 스트림의 길이로 대상 스트림의 위치를 ​​설정할 수 있습니다

답변

0

:

memoryStream1.CopyTo(target); 
target.Position = memoryStream1.Length; 
memoryStream2.CopyTo(target); 

그래서 두 번째 스트림의 복사가 지정된 위치


에서 시작

전체 코드 :

using (MemoryStream target = new MemoryStream(30)) 
{ 
    using(MemoryStream mem1 = new MemoryStream(new byte[] { 1, 2, 3, 4, 5 })) 
    { 
     mem1.CopyTo(target); 
     target.Position = mem1.Length; 
    } 
    using (MemoryStream mem2 = new MemoryStream(new byte[] { 6, 7, 8, 9, 10 })) 
    { 
     mem2.CopyTo(target); 
    } 
    foreach(byte b in target.ToArray()) 
    { 
     Console.Write(b+","); 
    } 
} 

안부
플로

편집 : 당신은 위치의 재설정이 필요하지 않을 수 있도록
, 그것은 간단 당신은 또한 WriteTo -Method를 사용할 수 있도록합니다.

+0

감사합니다. 모든 것을 시도했습니다 - CopyTo, WriteTo, 지정된 위치 - 마지막 스트림 만 인쇄됩니다. 그것은 모든 것을 올바르게 결합하지만 대상 스트림의 크기를 볼 수 있습니다. PDF로 내보내기가 까다로운 점이 있습니다. 정확히 무엇을 알아 내지 못합니다. – Peter

+0

어쩌면 당신의 질문을 조정해야합니다. 아마도 PDF 파일에 문제가있을 수 있습니다. 아마도 사람들이 당신에게 유용한 도움을 줄 수있을 것입니다 ^^ –