Zip-архив в Ява

Четене на съдържанието на Zip-архива.

В Java за четене на Zip архиви използва ZipInputStream клас. Във всеки архив винаги се изисква, за да видите отделните записи (записи). метод getNextEntry връща на запис, описващ тип обект ZipEntry един. прочетете метод ZipInputStream клас се променя така, че да се връща -1 в края на текущия запис (а не само на крайния Zip-файл). Допълнителна closeEntry извиква метод, за да бъде в състояние да преминете към следващото четене на записа.

ZipInputStream зин = нов ZipInputStream (нов FileInputStream (zipName));
ZipEntry влизане;
докато ((влизане = zin.getNextEntry ())! = нула) // влизане Анализ
// прочете съдържанието може да
zin.closeEntry ();
>
zin.close ();

За да прочетете съдържанието на конкретен запис на Zip-файл, не се използват ефективно стандартния метод на четене, както и методите за някои има голям потенциал стрийминг филтър. Например, за да се чете текстов файл вътре в Zip-архив, можете да използвате следната линия:

Скенер в = нов скенер (зин);
докато (in.hasNextLine ()) // изпълнение с операции in.nextLine ()

Влизане Zip-архив.

клас ZipOutputStream използва за записване на Zip-файл. За всеки запис, който искате да поставите в Zip-файл е създаден ZipEntry обект. Желаното име на файла се предава на ZipEntry на конструктор; той определя масивите от други параметри, като например датата на създаване на метода и декомпресия. Ако се желае, тези параметри могат да бъдат заменени. Наричана по-долу метод putNextEntry ZipOutputStream клас, за да започнете процеса на записване на нов файл. След това данните на видео файл се изпраща ZIP поток. При метода на завършеност нарича closeEntry. След това, всички тези действия се извършват многократно за всички други файлове, които искате да запазите в Zip-архив. По-долу е представен преглед на необходимия код:

FileOutputStream fout = нов FileOutputStream ( "test.zip");
ZipOutputStream Zout = нов ZipoutputStream (fout);
// За всички файлове:
ZipEntry Зе = нов ZupEntry ( "Име на файл"); // Името на файла - име на файла в архива
zout.putNextEntry (Зе);
// изпращане на данни поток Zout
zout.closeEntry ();
>
zout.close ();

Клемни съоръжения с опазването

Налице е клас "Служител" реализира интерфейс за сериализиране:

обществен служител клас изпълнява Serializable

име String;
вътр възраст;
INT заплата;

обществен служител (String име, вътр възраст, вътр заплата) this.name = име;
this.age = възраст;
this.salary = заплата;
>

обществени невалидни печат () System.out.println ( "Запис на:" + име);
System.out.println ( "Name:" + име);
System.out.println ( "Възраст:" + възраст);
System.out.println ( "Заплата:" + заплата);
>
>

Запази този клас от обекти, които можем с следния код:

внос java.io. *;
внасяме java.util.zip * .;

обществени клас SaveEmployee

публично статично невалидни основни (String argv []) хвърля
Изключение служителите Сара = нов служител ( "S. Jordan", 28,
56000);
Служителите Сам = нов служител ( "S. McDonald", 29,
58000);
FileOutputStream FOS = нов FileOutputStream ( "DB");
GZIPOutputStream GZ = нов GZIPOutputStream (FOS);
ObjectOutputStream ООС = нов ObjectOutputStream (GZ);
oos.writeObject (Sarah);
oos.writeObject (Сам);
oos.flush ();
oos.close ();
fos.close ();
>
>

Тук всичко е просто, данните, които запишете файл (FileOutputStream), преди това ги стиснете (GZIPOutputStream) и предмети (ObjectOutputStream) действа като данни.

Качи спаси компресирани предмети, тъй като просто като освен тях:

внос java.io. *;
внасяме java.util.zip * .;

обществени клас ReadEmployee

публично статично невалидни основни (String argv []) хвърля
Изключение FileInputStream ФИС = нов FileInputStream ( "DB");
GZIPInputStream GS = нов GZIPInputStream (ФИС);
ObjectInputStream OIS = нов ObjectInputStream (GS);
Служителите Сара = (служителите) ois.readObject ();
Служителите Сам = (служителите) ois.readObject ();
sarah.print ();
sam.print ();
ois.close ();
fis.close ();
>
>

Данните се четат от файл (FileInputStream), файловете са компресирани (GZIPInputStream), това са обекти (ObjectInputStream).

Възможно е също да обменят предмети компресирани между сървър / клиент (с помощта на контакти) по-долу е изпращане на сгъстен клиент обектен код:

GZIPOutputStream gzipout =
нов GZIPOutputStream (socket.getOutputStream ());
ObjectOutputStream ООС =
нов ObjectOutputStream (gzipout);
oos.writeObject (OBJ);
gzipos.finish ();

Ето кода, за да получите и декомпресиране на данни за обектите от сървъра:

Гнездо гнездо = ​​нов цокъл (remoteServerIP, PORT);
GZIPInputStream gzipin =
нов GZIPInputStream (socket.getInputStream ());
ObjectInputStream OIS = нов ObjectInputStream (gzipin);
Обект о = ois.readObject ();

scream3r dreamnewq zZoMROT random1st samhane NordLad Блато Giggs13 SamTan