Zip-arhiva în Java

Citind conținutul Zip-arhiva.

În Java, pentru citirea Zip-arhive utilizate clasa ZipInputStream. În fiecare arhivă este întotdeauna necesar pentru a vizualiza înregistrările individuale (intrări). Metoda getNextEntry returnează o intrare care descrie un ZipEntry tip de obiect. citește metoda clasa ZipInputStream este schimbat, astfel încât acesta returnează -1 la sfârșitul înregistrării curente (și nu doar la sfârșitul Zip-fișier). Mai mult closeEntry metoda invocată pentru a fi în măsură să trecerea la următoarea citire a înregistrării.

ZipInputStream zin = new ZipInputStream (new FileInputStream (zipName));
intrare ZipEntry;
în timp ce ((intrare = zin.getNextEntry ())! = null) // intrare Analiza
// citește conținutul ar putea
zin.closeEntry ();
>
zin.close ();

Pentru a citi conținutul unei înregistrări specific al Zip-fișier nu utilizează în mod eficient metoda standard de citire, precum și metodele de unele are un mare potențial de filtru de streaming. De exemplu, pentru a citi un fișier text în interiorul Zip-arhiva, puteți utiliza următoarea buclă:

Scanner in = new Scanner (zin);
în timp ce (in.hasNextLine ()) // executie cu operațiuni in.nextLine ()

Intrarea Zip-arhiva.

clasa ZipOutputStream folosit pentru a înregistra Zip-fișier. Pentru fiecare intrare pe care doriți să îl plasați în Zip-fișierul este creat ZipEntry obiect. Numele dorit pentru fișierul este trecut la ZipEntry constructor; el stabilește seturile de alți parametri, cum ar fi data fișierul a fost creat și metoda de decompresie. Dacă se dorește, acești parametri pot fi înlocuite. Numit în continuare metoda de clasa putNextEntry ZipOutputStream pentru a începe procesul de înregistrare a unui fișier nou. După aceea, datele de fișier video este trimis flux zip. După metoda de finalizare numita closeEntry. Apoi, toate aceste acțiuni sunt efectuate în mod repetat, pentru toate celelalte fișiere pe care doriți să le salvați în Zip-arhiva. Următoarele oferă o imagine de ansamblu a codului necesar:

FileOutputStream Fout = new FileOutputStream ( "test.zip");
ZipOutputStream Zout = new ZipoutputStream (Fout);
// Pentru toate fișierele:
ZipEntry ze = new ZupEntry ( "FILENAME"); // Numele fișierului - numele de fișier în arhivă
zout.putNextEntry (ze);
// trimite Zout flux de date
zout.closeEntry ();
>
zout.close ();

Facilitățile de compresie cu conservare

Există o clasă de „angajat“ implementează o interfață pentru serializarea:

Angajat clasa publică implementează Serializable

String nume;
vârsta int;
int salariu;

Angajat publice (String nume, vârsta int salariu) this.name = nume;
this.age = vârstă;
this.salary = salariu;
>

imprimare public void () System.out.println ( "Record pentru:" + nume);
System.out.println ( "Nume:" + nume);
System.out.println ( "Varsta:" + vârstă);
System.out.println ( "Salariu:" + salariu);
>
>

Salvați această clasă de obiecte putem cu următorul cod:

import java.io. *;
import java.util.zip * .;

public class SaveEmployee

public static void main (String argv []) aruncă
Excepție Angajat sarah = angajat nou ( "S. Jordan", 28,
56000);
Angajat sam = nou angajat ( "S. McDonald", 29,
58000);
FileOutputStream FOS = new FileOutputStream ( "db");
GZIPOutputStream gz = new GZIPOutputStream (FOS);
ObjectOutputStream OOS = new ObjectOutputStream (gz);
oos.writeObject (sarah);
oos.writeObject (sam);
oos.flush ();
oos.close ();
fos.close ();
>
>

Aici totul este simplu, datele pe care le salva un fișier (FileOutputStream) înainte de stoarcere-le (GZIPOutputStream) și obiecte (ObjectOutputStream) acționează ca date.

Încărcați salvat obiecte comprimate la fel de simplu ca le salva:

import java.io. *;
import java.util.zip * .;

public class ReadEmployee

public static void main (String argv []) aruncă
Excepție FileInputStream fls = new FileInputStream ( "db");
GZIPInputStream gs = new GZIPInputStream (fls);
ObjectInputStream ois = new ObjectInputStream (gs);
Angajat sarah = (angajat) ois.readObject ();
Angajat sam = (angajat) ois.readObject ();
sarah.print ();
sam.print ();
ois.close ();
fis.close ();
>
>

Datele sunt citite dintr-un fișier (FileInputStream), fișierele sunt comprimate (GZIPInputStream), acestea sunt obiectele (ObjectInputStream).

De asemenea, este posibil să se facă schimb de obiecte comprimat între server / client (folosind prize) de mai jos este de a trimite comprimat cod obiect de client:

GZIPOutputStream gzipout =
Noul GZIPOutputStream (socket.getOutputStream ());
ObjectOutputStream OOS =
new ObjectOutputStream (gzipout);
oos.writeObject (obj);
gzipos.finish ();

Iată codul pentru a primi și decomprima datele obiectului de pe server:

Socket = new Socket (remoteServerIP, PORT);
GZIPInputStream gzipin =
Noul GZIPInputStream (socket.getInputStream ());
ObjectInputStream ois = new ObjectInputStream (gzipin);
Obiectul o = ois.readObject ();

scream3r dreamnewq zZoMROT random1st samhane NordLad Swamp Giggs13 SamTan