아무도 나에게 차이점을 설명해 주시겠습니까?스트림 위치 = 0 대신 Seek (0L, SeekOrigin.Begin)을 사용하는 이유 또는 그 반대로
Google에 알려 봤지만 많은 정보를 찾을 수 없었습니다. 올바른 키워드를 사용하지 않았을 수 있습니다.
어떤 통찰력이라도 대단히 감사하겠습니다.
아무도 나에게 차이점을 설명해 주시겠습니까?스트림 위치 = 0 대신 Seek (0L, SeekOrigin.Begin)을 사용하는 이유 또는 그 반대로
Google에 알려 봤지만 많은 정보를 찾을 수 없었습니다. 올바른 키워드를 사용하지 않았을 수 있습니다.
어떤 통찰력이라도 대단히 감사하겠습니다.
내가 알 수있는 한, 적어도이 특별한 경우에는 아무것도 말할 수 없다.
두 가지 방법 Seek()와 Property Position은 CanSeek를 true로 요구하므로 구현 자에게 달려있다.
Seek은 실제로 지정된 위치 (SeekOrigins)에서 오프셋 (MSDN에 제공된 예제는 다소 복잡하지만 목적을 나타내는 : http://msdn.microsoft.com/en-us/library/system.io.filestream.seek.aspx)을 검색 할 수 있도록합니다.
위치는 절대적이며 검색을위한 것이 아닙니다.
언급 한 사례가 동일한 경우입니다.
개인적으로. "파일의 시작 부분을 검색하여이 0 오프셋을 이동하는 것보다 깨끗하게 읽는 것처럼 .Position = 0을 사용하여 스트림 시작 부분으로 이동하십시오."
예에서 차이는 없습니다.
Stream.Position
및 Stream.Seek
간의 실제 차이가 Position
Seek
는 두번째 인수로 지정된 원점을 기준으로 오프셋을 사용하는 반면 절대 오프셋을 사용한다는 것이다.
stream.Seek(x, SeekOrigin.Begin);
및 stream.Position = x;
모두 스트림 위치가 x
으로 설정됩니다. 차이점은 설정 기가 무조건 임의의 읽기 버퍼를 버리고, Seek
메소드는 새 위치와 여전히 관련이있는 버퍼 부분을 보유하려고 시도한다는 것입니다.
시나리오에 따라 어느 것이 더 빠르지 만 성능 차이가 있으며 모든 경우에 더 빠른 것은 아닙니다. 나는이 차이점이 왜 문서화되지 않았는지 정말로 궁금해.
감사합니다. 이것은 내가 인식하지 못했던 중요한 중요한 차이였습니다. 거꾸로 작은 탐색을하는 버그를 수정하는 데 도움이되는 잘못된 데이터가 발생했습니다. 대신 위치로 변경되고 데이터가 읽혀집니다. – tcarvin