Zip архив в Ява - компресия и извличане на файлове

Мисля, че много хора са изпълнени с необходимостта от създаване на цип архиви в програмите за Java. Разопаковайте архива на програмния код намерени много по-малко, но все пак се случва.

Нека разгледаме един API за работа с архиви. Имаме нужда от java.util.zip класове са в пакета.

Създаване на архив

За да създадете нов архив трябва да използвате клас ZipOutputStream. Ето списък на методи, които могат да бъдат необходими:

  • setLevel - инсталиране на ниво компресия 0-9 с 9 - максимална компресия;
  • putNextEntry - наречен преди записването на нов обект във файла с името на обекта;
  • closeEntry - обадете се след записа съоръжението. putNextEntry автоматично извиква метод closeEntry.
  • близо - затваря поток.

Малък пример - ще създадете файл с Archive.zip името, което ще се компресира файлове от директория папка. В този пример, празни директории ще бъдат игнорирани. ниво на компресия не е посочено изрично, poєtomu ще използва стойността по подразбиране.

Моля, имайте предвид, че при създаването на ZipEntry ние използвахме относителен път, а не само името на файла. Това се прави, за да се гарантира, че когато резервната спаси цялото дърво на директории, които водят до файла. Ако f.getName () се използва в архива ще бъде само с плосък списък с файлове, без информация директория.

Извличане на файловете от архива

Сега, нека да напише малко полезност в Java за извличане на фаловете на цип архива. Имаме нужда от java.util.zip класове от пакета - това ZipFile и ZipEntry.

ZipFile както става ясно от заглавието на клас е архивен файл. Един от най-важните методи на класа има (метод на записи). Методът връща изброяване на файлови обекти.

Повтаряне на прехвърляне, ние създаваме необходимите празни директории, ако има такива, както и запис на обекти за файловата система, освен запазването на всички директории.

В допълнение към ZipEntry обект getName все още има upotrebimo методи:

  • getSize - размер на файла в некомпресиран вид;
  • getCompressedSize - размер заета от файла в архива;
  • getTime - време на последна промяна на обекта.

Е, това е източника комунални услуги:

пиша () - метод помощник, който пише от една нишка към друга. Между другото, за начинаещи, да се помни, как да копирате от информация OutputStream на InputStream - този въпрос понякога попита Junior да интервюират.