> 백엔드 개발 > C++ > C#을 사용하여 메모리 내 ZIP 아카이브를 성공적으로 생성하고 '잘못된 ZIP' 오류를 방지하는 방법은 무엇입니까?

C#을 사용하여 메모리 내 ZIP 아카이브를 성공적으로 생성하고 '잘못된 ZIP' 오류를 방지하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-07 00:33:46
원래의
228명이 탐색했습니다.

How to Successfully Create an In-Memory ZIP Archive Using C# and Avoid the

System.IO.Compression을 사용하여 메모리에 ZIP 아카이브 생성: 잘못된 ZIP 오류 극복

ZIP 아카이브를 생성하려고 할 때 MemoryStream을 사용하여 메모리를 사용하면 아카이브가 생성되었지만 원하는 콘텐츠가 부족한 문제가 발생할 수 있습니다. 이 문제는 아카이브를 완료하기 위해 체크섬과 같은 최종 바이트를 아카이브에 써야 하기 때문에 발생합니다.

이 문제를 해결하려면 다음 수정된 코드를 사용할 수 있습니다.

using (var memoryStream = new MemoryStream())
{
   using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
   {
      var demoFile = archive.CreateEntry("foo.txt");

      using (var entryStream = demoFile.Open())
      using (var streamWriter = new StreamWriter(entryStream))
      {
         streamWriter.Write("Bar!");
      }
   }

   using (var fileStream = new FileStream(@"C:\Temp\test.zip", FileMode.Create))
   {
      memoryStream.Seek(0, SeekOrigin.Begin);
      memoryStream.CopyTo(fileStream);
   }
}
로그인 후 복사

여기서 중요한 차이점은 ZipArchive 생성자의 세 번째 매개변수가 true로 설정되어 있다는 것입니다. 이 매개 변수는 기본 스트림을 닫지 않고 ZipArchive를 삭제할 수 있음을 나타냅니다. 이를 통해 아카이브 생성 후 MemoryStream을 재사용할 수 있습니다.

수정된 코드를 사용하면 MemoryStream을 사용하는 경우에도 원하는 내용으로 메모리에 ZIP 아카이브를 성공적으로 생성할 수 있습니다. 이러한 유연성을 통해 중간에 파일을 처리할 필요 없이 다양한 시나리오에서 아카이브를 조작할 수 있습니다.

위 내용은 C#을 사용하여 메모리 내 ZIP 아카이브를 성공적으로 생성하고 '잘못된 ZIP' 오류를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿