2016-08-01 5 views
4

읽는 방법 :스트림의 모든 바이트 그러나 나는 다음과 같은 코드가 지난 8

using (var fs = new FileStream(@"C:\dump.bin", FileMode.Create)) 
{ 
    income.CopyTo(fs); 
} 

income 내가 디스크에 저장해야 스트림입니다, 문제는 내가 마지막을 무시해야한다는 것입니다 8 바이트를 저장하고 그 전에 모든 것을 저장하십시오. 소득 스트림은 읽기 전용이며 전달 만하므로 크기를 예측할 수 없으며 전송되는 막대한 파일 때문에 메모리에있는 모든 스트림을로드하지 않으려합니다.

도움이 될 것입니다. 설정

using (var fs = new FileStream(@"C:\dump.bin", FileMode.Create)) 
{ 
    income.CopyTo(fs); 
    fs.SetLength(Math.Max(income.Length - 8, 0)); 
} 

파일 길이 후입니다 :

+0

관리 가능한 크기의 청크를 읽고 큐에 넣고 큐에서 8 바이트를 제외한 모든 바이트를 읽은 다음 출력 스트림에 쓰고 반복하십시오. – n0rd

+0

샘플 코드가 있습니까? – user3900456

답변

1

아마 (또는 오히려 아마) 순간에 내 마음에 오는 첫번째 생각을 그 일을하지만 실용적인되는 깨끗한 방법이 이것이다 이렇게 적혀있다.

+0

4GB와 같이 대용량 파일에서도 괜찮은가요? – user3900456

+0

글쎄, 처음에는 8 바이트를 '너무 많이'쓰기 때문에 문제가되지 않아야하고 마지막부터 파일을 다듬지 않아도 파일의 전체 재 작성이 필요하지 않으므로 성능이 좋아야합니다. – DAXaholic

+0

멋지다, 고마워! – user3900456