Arhivarea directoarelor, zip

Java pentru lucrul cu fișiere în plus față de funcționalitatea generală (citire, scriere, etc.) oferă posibilitatea de a folosi arhive zip. Pentru aceasta, două clase sunt definite în pachetul java.util.zip - ZipInputStream și ZipOutputStream.

Din păcate, nu am putut crea o arhivă normală cu caractere în limba rusă în numele fișierelor și directoarelor. Prin urmare, în exemple am folosit biblioteca apache-ant-zip.jar. care rezolvă cu succes problemele de arhivare a fișierelor în numele cărora se utilizează chirilica.

De exemplu, vom folosi directorul de trei niveluri cu următoarea structură:

Arhivarea directoarelor, zip

Arhivați directorul

Pentru a codifica corect numele fișierelor în limba rusă, exemplul folosește metoda setEncoding a clasei ZipOutputStream.

Exemplul folosește metoda addDirectory recursivă. În această metodă, după ce obiectul ZipEntry este adăugat la fluxul ZipOutputStream, conținutul fișierului este scris. Pentru aceasta, utilizați metoda de scriere. care scrie în flux un zout.write (tampon) byte matrice. În final, ZipEntry este închis folosind metoda closeEntry ().

Rezultatul programului poate fi văzut în consola:

Directorul dezarhivat

Exemplul de dezarhivare folosește fișierul creat în exemplul anterior de arhivare a directorului.

Metoda Unzip acceptă un fișier de arhivă ca parametru de intrare. ZipFile vă permite să obțineți toate "intrările" de directoare și fișiere din arhivă. După aceea, conținutul arhivei este extras în bucla.

Rezultatul programului poate fi văzut în consola:

Codul sursă pentru acest exemplu de arhivare a unui director pe mai multe niveluri și extragerea fișierului ca proiect Eclipse poate fi descărcat aici (56,6 MB). Biblioteca apache-ant-zip.jar. Exemplul utilizat în exemplu este inclus în proiect.