2011-05-04 2 views

답변

3

내가 알 수있는 한, 적어도이 특별한 경우에는 아무것도 말할 수 없다.

두 가지 방법 Seek()와 Property Position은 CanSeek를 true로 요구하므로 구현 자에게 달려있다.

Seek은 실제로 지정된 위치 (SeekOrigins)에서 오프셋 (MSDN에 제공된 예제는 다소 복잡하지만 목적을 나타내는 : http://msdn.microsoft.com/en-us/library/system.io.filestream.seek.aspx)을 검색 할 수 있도록합니다.

위치는 절대적이며 검색을위한 것이 아닙니다.

언급 한 사례가 동일한 경우입니다.

개인적으로. "파일의 시작 부분을 검색하여이 0 오프셋을 이동하는 것보다 깨끗하게 읽는 것처럼 .Position = 0을 사용하여 스트림 시작 부분으로 이동하십시오."

3

예에서 차이는 없습니다.

Stream.PositionStream.Seek 간의 실제 차이가 PositionSeek는 두번째 인수로 지정된 원점을 기준으로 오프셋을 사용하는 반면 절대 오프셋을 사용한다는 것이다.

13

stream.Seek(x, SeekOrigin.Begin);stream.Position = x; 모두 스트림 위치가 x으로 설정됩니다. 차이점은 설정 기가 무조건 임의의 읽기 버퍼를 버리고, Seek 메소드는 새 위치와 여전히 관련이있는 버퍼 부분을 보유하려고 시도한다는 것입니다.

시나리오에 따라 어느 것이 더 빠르지 만 성능 차이가 있으며 모든 경우에 더 빠른 것은 아닙니다. 나는이 차이점이 왜 문서화되지 않았는지 정말로 궁금해.

+1

감사합니다. 이것은 내가 인식하지 못했던 중요한 중요한 차이였습니다. 거꾸로 작은 탐색을하는 버그를 수정하는 데 도움이되는 잘못된 데이터가 발생했습니다. 대신 위치로 변경되고 데이터가 읽혀집니다. – tcarvin

관련 문제