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 да интервюират.