파일은 비용이 많이 드는 작업을 내가 구조화 된 파일을 읽고 수업 시간에 게으른 로딩 기능을 제공하고 싶습니다는 파일이 비용이 많이 드는 작업
에게 스트리밍 개방되어 스트리밍 개방된다. 파일의 모든 요소에는 헤더와 페이로드가 있습니다. 와 관계있는 필드가
클래스의 프로토 타입이의 C#
public class OneElement
{
public Header TheHeader {get; private set;}
private string _FileName;
private long _StreamPosition; // this value is initialized when the header is read
private Payload _ThePayload;
public Payload ThePayload
{
get{
if (_ThePayload == null)
using (var stream = File.OpenRead(_FileName))
{
stream.seek(_StreamPosition,SeekOrigin.Begin); // seek to the relevent position
_ThePayload = ReadPayload(stream); // this method return the paylod read reads from the current position
}
return _ThePayload;
}
}
}
과 같을 것이다 액세스하는 경우에만
생각은 파일에서 헤더 만로드와 페이로드 데이터에 액세스하는 것입니다 파일을 열고 페이로드가 오디오 또는 비디오 데이터를 나타내는 컨텍스트에서 특히 비용이 많이 듭니다.
아직 시도한 시간이 없었습니다. (실제로는 필요하지 않습니다.)이 경우를 구현하여 사용자가 대용량 파일을 필터링 할 수있게하려고 생각했습니다. 파일에서 모든 키 프레임을 가져 오는 것은 처럼 보일 것입니다. var keyframes = ListElements.Where (e => e.IsKeyframe); 그리고 전체 프레임로드가 전체적으로 발생하지 않을 것입니다. –
이렇게하면 각 프레임을 개별적으로로드하는 것이므로 수천 번 파일을 열고 닫을 수 있습니까? 그것은 상당한 비용이 될 수 있습니다. –