이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 38466|회답: 0

[팁] C#/.NET에서 스트림을 파일로 저장하는 방법

[링크 복사]
2021-5-16 21:12:58에 게시됨 | | |
Stream을 파일로 저장하는 방법에 관한 블로그 글들을 온라인에서 봤는데,많은 부분이 틀렸습니다。 (몇 가지 문제를 발견했습니다: 성능 저하, 스트림이 너무 클 때 비정상적임)

Stream을 얻은 후 이 Stream을 우아하게 코드로 저장하는 방법

가장 우아한 방법은 CopyTo 또는 CopyToAsync 메서드를 통해 사용해야 합니다


여기 inputStream.Seek(0, SeekOrigin.Begin); 반드시 그렇지는 않습니다. 10번째 비트에서 스트림만 복사하면 되는 등 본인의 필요에 따라 이 코드를 사용해 주세요

비동기식 방식을 사용하면 이 쓰기에 시간이 조금 더 걸리지만, 전체 성능이 향상되고 CPU가 다른 작업을 처리할 수 있게 됩니다




CopyToAsync를 사용할 때는 await를 추가하는 것을 기억하세요. 이 코드를 실행할 때 실행을 IO에 넘기게 됩니다. 대부분의 IO 처리는 CPU가 필요 없이 계산하므로 전체 성능이 향상될 수 있습니다

또한, iputStream이 외부에서 들어온다면 이 방법 안으로 방출하는 것은 추천하지 않습니다. 왜 그런가요? 좋은 시냇물을 사용했는데, 사업장에서 지나가면서 그 시냇물이 죽었어요

두 번째 방법은 메모리 복제 캐시를 직접 제어하는 것으로, 추가 메모리 복사본이 있습니다


이 방법은 새 바이트[1024]의 값을 수정할 수 있게 해주어 복사된 캐시를 제어할 수 있게 해줍니다

다음은 추천하지는 않지만 글을 쓸 때 편리한 방법들입니다


위 방법은 메모리를 두 번 복사하며, 입력 자원 길이가 1G라면 2G의 자원을 차지하게 됩니다

위와 유사하게 큰 캐시를 요청하는 방식은 다음 코드에서 보여준 것입니다


효율성과 코드 세련됨 면에서는 CopyTo 방식에 비해 오히려 열등하며, 스트림 문제도 있습니다. 길이와 길이는 캐시를 결정하지 않으므로 두 번째 방법만큼 좋지 않습니다

아래는 매우 느린 방법입니다. 바이트 단위로 쓰는 것이 매우 느립니다


전근 출처:하이퍼링크 로그인이 보입니다.
(끝)




이전의:NPOI 엑셀 상세 설명
다음:HTTP 요청 헤더 내 여러 IP 주소를 X-전달-포
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com