당신이 초기 스트림에있는 데이터를 엉망으로하지 않을 경우는 것이 작품처럼하지 뭔가 : 당신이 4 + .NET을 사용하는 경우
var myStreamInitially = new MemoryStream();
var myStreamClone = new MemoryStream();
myStreamInitially.CopyTo(myStreamClone);
var binaryWriteb = new BinaryWriter(myStreamClone);
는하는 CopyTo 방법은 매우 편리합니다 . 당신은 예외를 받기를하려고하면
void WriteToStreamInUnknownStatus(BinaryWriter binaryWriter)
{
var myStream = new MemoryStream();
try
{
binaryWriter.Write(myStream.ToArray());
}
catch
{ }
}
업데이트 2
: UPDATE
이 다음 더 안전한 binaryStream 기본 baseStream 변화보다가 "메모리 스트림을 펼칠 수 없습니다. "
static void Main(string[] args)
{
var binaryWrite = new BinaryWriter(new MemoryStream(new byte[] {1, 2, 3, 4}));
binaryWrite.Seek(3, SeekOrigin.Begin);
var position = binaryWrite.BaseStream.Position;
new MemoryStream(new byte[] {1, 2, 3, 4}).CopyTo(binaryWrite.BaseStream);
position = binaryWrite.BaseStream.Position;
}
따라서 속성이 스레드로부터 안전해야한다는 것 외에 내부 스트림의 유형을 알아야합니다. IMO 위험에 처한다. 당신이 제안 무엇
http://msdn.microsoft.com/en-us/library/dd782932.aspx에 따르면, "복사는 현재의 현재 위치에서 시작 흐름." – Gray
@ 그레이 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ BinaryWriter의 위치와는 관련이 거의 없습니다. – Virtlink
나는 단지 여기에서 추측하고있다, 내가 당신을 인도하게하지 마라. 나는 이것의 실제 구현을 설명하는 것 같다 : http://stackoverflow.com/questions/16341653/filestream-copytonet-connectstream-what-happens-intern 이것을 우연히 만났어. – Gray