aspose.info
RO

ZIP

Actualizat

Ce este un fișier ZIP?

Un fișier cu extensia .zip este o arhivă care poate deține unul sau mai multe fișiere sau directoare. Arhiva poate avea compresie aplicată fișierelor incluse pentru a reduce dimensiunea fișierului ZIP. Formatul fișierului ZIP a fost făcut public încă din februarie 1989 de Phil Katz pentru a realiza arhivarea fișierelor și folderelor. Formatul a fost făcut parte din utilitarul PKZIP, creat de PKWARE, Inc. Imediat după disponibilitatea specificațiilor disponibile, multe companii au făcut ca formatul de fișier ZIP să facă parte din utilitatile lor software, inclusiv Microsoft (din Windows 7), Apple (Mac OS X) și multe altele.

Scurt istoric al formatului de fișier ZIP

Istoricul formatului de fișier ZIP datează de la evenimentul procesului lansat de System Enhancement Associates (SEA) împotriva PKWARE pentru utilizarea utilitarului său ARC fără permisiuni pentru marca sa comercială și drepturile de autor asupra aspectului produsului și a interfeței cu utilizatorul. Înainte de aceasta, Phil Katz a rescris codul sursă al SEA și a lansat PKXARC, un extractor ARC și PKARC, un compresor de fișiere, ca program gratuit pentru sistemele bazate pe MS-DOS. Pierzând în proces, PKWARE nu a mai putut folosi nimic legat de ARC. Aici a apărut crearea unei noi compresii de fișiere, numită ZIP, care a fost făcută parte din utilitarul PKZIP la PKWARE, Inc.

Katz a lansat specificațiile de format de fișier ZIP în domeniul public, păstrând în același timp drepturile de proprietate asupra utilitarului său de comprimare și extragere, adică PKZIP. Sistemul de compresie ZIP a fost (și este) capabil să arhiveze fișiere într-un folder prin intermediul unui algoritm de verificare a redundanței ciclice pe 32 de biți (CRC) pentru a comprima fișierul dimensiuni. Spre deosebire de ARC, folderele .ZIP includeau un fișier director care juca rolul unei cărți de coduri a unui criptograf, deținând informațiile necesare pentru a reda fișierele comprimate.

Metode de compresie acceptate în ZIP

Conform specificațiilor de format de fișier .ZIP, sunt acceptate următoarele metode de compresie.

  • Store - nu implică compresie
  • Se micsoreaza
  • Reducere (Acest lucru implică factori de compresie variind de la nivelul 1 la nivelul 4)
  • Implozie
  • Dezumflați
  • Deflat64
  • BZIP2
  • LZMA (EFS)
  • WavPack
  • PPMd versiunea I, Rev 1

DEFLATE este metoda de compresie folosită în mod obișnuit, care este un algoritm de comprimare a datei fără pierderi care utilizează o combinație de codare LZ77 și Huffman și este detaliată în RFC 1951.

Specificații pentru formatul fișierului ZIP

Fișierele ZIP au capacitatea de a stoca mai multe fișiere folosind tehnici de compresie diferite, în timp ce în același timp acceptă stocarea unui fișier fără nicio compresie. Fiecare fișier este stocat/comprimat individual, ceea ce ajută la extragerea lor sau adăugarea altora noi, fără a aplica compresie sau decompresie întregii arhive.

Format general de fișier ZIP

Fiecare fișier Zip este structurat în felul următor:

ZIP Format de fișier
Antetul fișierului local 1
Fișier de date 1
Descriptor de date 1
Antetul fișierului local 2
Fișier de date 2
Descriptor de date 2
….
….
Antetul fișierului local N
Fișier de date N
Descriptor de date N
Antet de decriptare arhivă
Arhivați înregistrarea datelor suplimentare
Directorul central

Formatul de fișier ZIP folosește algoritmul CRC pe 32 de biți pentru arhivare. Pentru a reda fișierele comprimate, o arhivă ZIP deține la capătul ei un director care păstrează intrarea fișierelor conținute și locația acestora în fișierul arhivă. Astfel, joacă rolul de codificare pentru încapsularea informațiilor necesare pentru a reda fișierele comprimate. Cititoarele ZIP folosesc directorul pentru a încărca lista de fișiere fără a citi întreaga arhivă ZIP. Formatul păstrează copii duble ale structurii directoarelor pentru a oferi o mai mare protecție împotriva pierderii de date.

Fiecare fișier dintr-o arhivă ZIP este reprezentat ca o intrare individuală, unde fiecare intrare constă dintr-un antet de fișier local urmat de datele fișierului comprimat. Directorul de la sfârșitul arhivei deține referințele la toate aceste intrări de fișier. Cititoarele de fișiere ZIP ar trebui să evite citirea antetelor fișierelor locale și tot felul de liste de fișiere ar trebui să fie citite din Director. Acest Director este singura sursă pentru intrări de fișiere valide în arhivă, deoarece fișierele pot fi adăugate și spre sfârșitul arhivei. De aceea, dacă un cititor citește anteturile locale ale unei arhive ZIP de la început, poate citi intrări nevalide (șterse), precum și acelea care nu fac parte din Directorul care este șters din arhivă.

Ordinea intrărilor de fișiere din directorul central nu trebuie să coincidă cu ordinea intrărilor de fișiere din arhivă.

Intrări în fișierul ZIP

Intrările în fișierul ZIP sunt aranjate una după alta, unde fiecare intrare constă din:

  • Antet fișier local
  • Câmpuri de date suplimentare opționale
  • Date utilizator (opțional comprimate/opțional criptate)

Antetul fișierului local al fiecărei intrări reprezintă informații despre fișier, cum ar fi comentariul, dimensiunea fișierului și numele fișierului. Câmpurile de date suplimentare (opțional) pot găzdui informații pentru opțiunile de extensibilitate ale formatului ZIP.

Antet fișier local

Antetul fișierului local are o structură de câmp specifică, constând din valori multi-octeți. Toate valorile sunt stocate în ordinea octeților little-endian unde lungimea câmpului numără lungimea în octeți. Toate structurile dintr-un fișier ZIP folosesc semnături de 4 octeți pentru fiecare intrare de fișier. Sfârșitul semnăturii directorului central este 0x06054b50 și poate fi distins folosind propria semnătură unică. Următoarea este ordinea informațiilor stocate în Antetul fișierului local.

OffsetBytesDescriere
04Semnătura antet fișierului local # 0x04034b50 (citit ca un număr little-endian)
42Versiunea necesară pentru extragere (minimum)
62Pavilion de biți de uz general
82Metoda compresiei
102Ora ultimei modificări ale fișierului
122Data ultimei modificări a fișierului
144CRC-32
184Dimensiune comprimată
224Dimensiune necomprimată
262Lungimea numelui fișierului (n)
282Lungimea câmpului suplimentară (m)
30nNumele fișierului
30+nmCâmp suplimentar

Antet fișier director central

OffsetBytesDescriere
04Semnătura antetului fișierului director central # 0x02014b50
42Versiune realizată de
62Versiunea necesară pentru extragere (minimum)
82Pavilion de biți de uz general
102Metoda compresiei
122Ora ultimei modificări ale fișierului
142Data ultimei modificări a fișierului
164CRC-32
204Dimensiune comprimată
244Dimensiune necomprimată
282Lungimea numelui fișierului (n)
302Lungimea câmpului suplimentară (m)
322Lungimea comentariului fișierului (k)
342Numărul discului de unde începe fișierul
362Atribute interne ale fișierului
384Atribute de fișiere externe
424Decalajul relativ al antetului fișierului local. Acesta este numărul de octeți dintre începutul primului disc pe care apare fișierul și începutul antetului fișierului local. Acest lucru permite software-ului să citească directorul central pentru a localiza poziția fișierului în interiorul fișierului ZIP.
46nNumele fișierului
46+nmCâmp suplimentar
46+n+mkComentariu la fișier

Sfârșitul înregistrării directorului central

OffsetBytesDescriere
04Sfârșitul semnăturii directorului central # 0x06054b50
42Numărul acestui disc
62Discul de unde începe directorul central
82Numărul de înregistrări din directorul central de pe acest disc
102Numărul total de înregistrări din directorul central
124Dimensiunea directorului central (octeți)
164Decalajul începutului directorului central, în raport cu începutul arhivei
202Lungimea comentariului (n)
22nComentariu

Referințe

Vezi și