arhiva Zip în Java - comprimarea și extragerea fișierelor

Cred că mulți oameni au întâlnit cu nevoia de a crea un zip-arhive în programele Java. arhivele despachetarea codul programului găsit mult mai puțin, dar încă mai are loc.

Să ne uităm la un API pentru lucrul cu arhive. Avem nevoie de clase java.util.zip sunt în pachet.

Crearea unei arhive

Pentru a crea o nouă arhivă trebuie să utilizați o ZipOutputStream clasă. Aici este o listă de metode care ar putea fi necesare:

  • setLevel - instalarea unui nivel de compresie la 0 la 9 cu 9 - compresie maximă;
  • putNextEntry - numit înainte de a înregistra un nou obiect în fișierul, cu numele obiectului;
  • closeEntry - apel după înregistrarea facilitate. putNextEntry apelează automat metoda closeEntry.
  • close - închide un flux.

Un mic exemplu - va crea un fișier cu numele Archive.zip, care va fi comprimat fișiere dintr-un director dosar. În acest exemplu, directoarele goale vor fi ignorate. nivelul de compresie nu este specificat în mod explicit, poєtomu va utiliza valoarea prestabilită.

Vă rugăm să rețineți că, atunci când creați ZipEntry am folosit o cale relativă, nu doar numele fișierului. Acest lucru se face pentru a se asigura că, atunci când backup salvat tot arborele de directoare, care duc la dosar. Dacă f.getName () utilizat în arhiva va fi doar o listă fixă ​​de fișiere fără informații director.

Extras fișierele din arhivă

Acum, să scrie un pic de utilitate în Java pentru a extrage Halyards din zip-arhiva. Avem nevoie de clase java.util.zip din pachet - acest zipfile și ZipEntry.

Zipfile astfel cum reiese din titlul de clasă este un fișier arhivă. Una dintre cele mai importante metode ale clasei au intrări metoda (). Metoda returneaza o enumerare a obiectelor de fișiere.

Iterating privind transferul, vom crea directoarele goale necesare, dacă este cazul, precum și obiecte de scriere la sistemul de fișiere, în afară de păstrarea toate directoarele.

În plus față de obiect ZipEntry getname există încă upotrebimo metode:

  • getSize - dimensiunea fișierului în format necomprimat;
  • getCompressedSize - dimensiunea ocupat de fișierul în arhivă;
  • getTime - timpul ultimei modificări a obiectului.

Ei bine, asta e sursa utilitati:

a scrie () - metoda ajutătoare, care scrie de la un fir la altul. Apropo, pentru începători să-și amintească cum să copiați informații de la OutputStream InputStream - această întrebare a cerut ocazional Junior la interviu.