2009-09-30 3 views
1

.Net MemoryStream 클래스의 사용법을 이해하려고합니다. 스트림이 사용 중일 때 임시 임시 길이의 이진 데이터를 저장해야합니다. 그래서 메모리 스트림을 할당하고 일시적으로 그 데이터를 써주세요. 내 스트림이 무료로되면 memorystream에서 모든 데이터를 읽고 그것에 데이터를 씁니다. 위치 포인터를 0으로 설정하여이 작업을 수행합니다.메모리 스트림에서 데이터 제거

즉 mDataBuffer.Position = 0;

그러나 memorystream 클래스는 읽은 후에 데이터를 삭제하지 않는 것으로 보입니다. 다음 번에는 이전과 같은 데이터를 얻습니다. 내가 (1,4)의 출력을 기다리고 있었다하지만 난이 샘플 프로그램을

 MemoryStream ms = new MemoryStream(); 
     ms.WriteByte((byte)1); 
     ms.Position = 0; 
     Console.WriteLine(ms.ReadByte()); 
     ms.WriteByte((byte)4); 
     ms.Position = 0; 
     Console.WriteLine(ms.ReadByte()); 

을 쓴 놀랍게도 출력 (1,1)이었다 확인합니다.

나는 memorystream의 이러한 행동에 당혹 스럽다. 누군가가 약간의 빛을 비추 수 있습니까? 또한 이것이 정상적인 동작 인 경우 스트림에서 지난 데이터를 어떻게 삭제할 수 있습니까? 사전에

감사합니다, VAIBHAV

답변

4

코드는 다음에 번역 할 수 있습니다 : * 위치에 쓰기 1 위치 0과 출력에서 ​​읽기 0 * (1) * 위치에 4 ​​쓰기 * 객체 만들기 1 * 위치 0에서 읽기 및 출력 (1)

ms.writebyte ((byte) 4) 줄 위에 ms.Position = 0을 삽입하여 수정할 수 있습니다.

관련 문제