ZIP 아카이브 형식

데이터가 가장 중요하고 스토리지 효율성이 가장 중요한 디지털 시대에 ZIP 아카이브는 파일 압축 및 구성을 위한 확고하고 유비쿼터스적인 솔루션으로 남아 있습니다.

Zip 아카이브 정보 정보

ZIP은 암호화 유무에 관계없이 하나 이상의 무손실 압축 파일 및 폴더를 보관할 수 있는 아카이브 형식입니다. ZIP은 30년 넘게 알려진 가장 널리 사용되는 형식이며 거의 모든 최신 운영 체제에서 지원됩니다. 이 형식은 JAR 및 OpenDocument와 같은 다른 형식으로도 확장되었습니다.

Zip 아카이브 파일 형식 기록 정보

ZIP의 첫 번째 형식 사양은 1989년에 발표되었습니다. ZIP 아이디어의 저자는 Phil Katz와 Gary Conway였습니다. 파일 크기를 줄이는 효율성으로 인해 즉각적인 성공을 거뒀으며, 그 시대의 느린 인터넷 연결과 제한된 저장 용량을 통해 파일을 더 쉽게 저장하고 전송할 수 있었습니다. 1993년부터 가장 일반적인 Deflate 압축 방법을 지원합니다. 강력한 AES 암호화는 2003년에 도입되었습니다. 꽤 오래된 표준임에도 불구하고 이 표준은 화석화되지 않았으며 현재 활발히 개발되고 있습니다. 그래서 2020년에는 Zstandard, MP3 및 XZ 압축 방법으로 확장되었습니다.

ZIP 아카이브의 구조

ZIP 아카이브는 이러한 계층 구조로 설계되어 압축된 파일을 효율적으로 저장하고 구성하는 동시에 아카이브 내의 개별 파일에 쉽게 액세스할 수 있습니다. 아카이브의 각 항목은 별도로 압축되며 자체 압축 및 암호화 방법을 사용할 수도 있습니다. 아카이브 내부 항목에는 원본 파일 메타데이터가 포함된 헤더가 앞에 있습니다. 목차는 파일 끝에 있습니다. 이러한 접근 방식을 사용하면 실행 가능한 부분이 SFX 파일의 시작 부분에 있기 때문에 유효한 ZIP 아카이브로 유지되는 자동 추출(SFX) 아카이브를 작성할 수 있습니다.

우편번호 압축 방법

최신 ZIP을 사용하면 Deflate, Deflate64™, BZIP2, LZMA, XZ, PPMd, Zstandard 알고리즘을 사용하여 데이터를 압축할 수 있습니다. 파일은 압축하지 않고 저장할 수도 있습니다. 가장 일반적인 것은 모든 아카이버 도구의 기본값인 Deflate입니다. MP3, JPEG, WAV와 같은 특정 파일의 무손실 압축 알고리즘도 있습니다. Aspose.ZIP은 Deflate, Deflate64™, Bzip2, LZMA, XZ, PPMd 및 Zstandard 방법을 완벽하게 지원합니다. WavPack 압축 오디오를 추출할 수 있습니다.

Zip 아카이브 지원 작업

Aspose.ZIP을 사용하면 ZIP 아카이브를 다양한 방법으로 처리할 수 있습니다. 아카이브를 구성하고, 다시 압축하지 않고 기존 아카이브에 항목을 추가하고, 아카이브의 나머지 부분에 영향을 주지 않고 기존 아카이브에서 항목을 삭제하고, 임의 항목 또는 전체 아카이브를 추출할 수 있습니다. 레거시 또는 최신 AES 암호화 알고리즘을 사용하여 각 항목을 개별적으로 암호화하고 해독할 수 있습니다. Aspose.ZIP은 자동 ​​추출 및 다중 볼륨 ZIP 아카이브를 생성할 수 있습니다.

Zip 파일 - 내부 구조

말했듯이, 목차인 중앙 디렉토리는 ZIP 아카이브의 끝부분에 위치합니다. 이 디렉토리는 아카이브 내의 위치와 함께 아카이브의 모든 파일 항목을 나열하는 색인 ​​역할을 합니다. 항목 헤더에는 생성 및 수정 시간, 파일 시스템 속성, 파일 이름 및 설명이 포함될 수 있습니다. 사용자 정의 메타데이터를 저장하기 위해 사용자 정의 추가 필드로 항목 헤더를 확장할 수 있습니다. 아카이브당 65,535개 이상의 항목을 지원하기 위해 Zip64 헤더를 포함할 수 있습니다. Zip64 확장자를 갖춘 ZIP 아카이브의 최대 크기는 264−1바이트입니다. ZIP 아카이브는 여러 파일로 분할될 수 있습니다. 이러한 경우 중앙 디렉토리는 특정 항목에 빠르게 액세스할 수 있도록 각 볼륨의 오프셋을 저장합니다.

Zip 파일 - 내부 구조

Zip 아카이브 및 지원의 인기

ZIP은 최고의 아카이브 형식입니다. ZIP 아카이브는 매우 널리 인식되고 지원되므로 Windows 탐색기, macOS Finder와 같은 널리 사용되는 파일 관리자, 7-ZipWinRAR 과 같은 오픈 소스 도구를 포함한 다양한 소프트웨어 응용 프로그램이 ZIP 아카이브에 대한 기본 지원을 제공합니다. ZIP 파일 생성 및 추출. 이 지원은 클라우드 스토리지 서비스, 이메일 클라이언트, 심지어 모바일 장치까지 확장됩니다.

Zip 파일 사용의 예

Zip 아카이브는 데이터를 압축하고 구성하기 위한 유비쿼터스 파일 형식으로, 다양한 소프트웨어 응용 프로그램에 필수적입니다. .NET을 통한 아카이브 작업을 통해 개발자는 손쉽게 Zip 파일로 작업할 수 있습니다. 다음 코드 예제에서는 Zip 아카이브를 사용한 작업 기능을 자세히 살펴보고 새 Zip 생성 아카이브를 효율적으로 추출하는 방법을 보여줍니다. 기존 것. 이러한 예제는 이 라이브러리의 기능을 활용하여 .NET 프로젝트에서 Zip 아카이브를 원활하게 관리하는 데 도움이 됩니다.

Create Zip file via .NET

Compose ZIP archive with two entries added by their paths.:

using (var archive = new Archive())
{
    archive.CreateEntry("entry_name1.dat", "input_file1.dat");
    archive.CreateEntry("entry_name2.dat", "input_file2.dat");
    archive.Save("result_archive.zip");
}

How to UnZIP files in C#

Steps: Unzip File to Folder in C#

  • Create an instance of Archive class based on your zip file.
  • Unzip the zip file using Archive.ExtractToDirectory method to your folder.
using (var archive = new Archive("input_archive.zip"))
{
    archive.ExtractToDirectory("outputDirectory");
}

Compressing Single File ZIP File

Steps: Compressing Single File in C#

  • Create a file stream with the desired name of your output zip file.
  • Create file stream of the data file to be compressed and encrypted.
  • Create an instance of Archive class and pass to it an instance of ArchiveEntrySettings class with AesEcryptionSettings instance, specifying the password.
  • Add data file created in step 2 using Archive.CreateEntry method.
  • Compress and encrypt the data file using Archive.Save method and pass it the file stream created in step 1.
using (var zipFile = File.Open("EncrypedWithAES256.zip", FileMode.Create))
{
    using (var source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
     {
           using (var archive = new Archive(new ArchiveEntrySettings(null, new  AesEcryptionSettings("p@s$", EncryptionMethod.AES256))))
           {
                  archive.CreateEntry("alice29.txt", source);
                  archive.Save(zipFile);
           }
      }
}

Deleting entries from existing archive

You do not have to repack whole archive when you only need to remove one entry from it. Steps:

  • Create a file stream with the desired name of your output zip file.
  • Create an instance of Archive class based on your zip file.
  • Delete the first file - the entry with zero index – from the archive.
  • Save the archive without excluded entry to output stream from step 1
using (FileStream outputZipFile = File.Open(withoutAnEntry.zip, FileMode.Create))
{
    using (Archive archive = new Archive(archive.zip))
    {
        archive.DeleteEntry(archive.Entries[0]);
        archive.Save(outputZipFile);
    }
}

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

Zip 아카이브에 대한 추가 정보

사람들이 물어봤어

1. 어떤 암호화 방법을 선택해야 합니까?

ZIP 형식은 기존(ZipCrypto) 및 최신 AES 암호화 기술을 지원합니다. 전자는 후자보다 훨씬 약하고 쉽게 부서질 수 있습니다. ZipCrypto는 레거시용 Aspose.ZIP에서 지원됩니다. 아카이브를 작성할 때 AES256 암호화만 사용하십시오.

2. 압축을 위해 멀티 코어 프로세서를 활용할 수 있는 방법이 있습니까?

Aspose.ZIP을 사용하면 다양한 CPU 코어별로 ZIP 아카이브 항목을 구성할 수 있습니다. 이렇게 하면 총 압축 시간을 크게 줄일 수 있습니다. 설명 및 사용 샘플이 포함된 기사 를 참조하세요.

3. 바이러스가 zip을 감염시킬 수 있나요?

예, 파일 자체가 감염된 경우 바이러스가 Zip 아카이브 내의 파일을 잠재적으로 감염시킬 수 있습니다. Zip 형식 자체는 본질적으로 유해하지는 않지만 다른 파일 형식과 마찬가지로 감염된 파일을 저장하고 전송할 수 있습니다.