"Halo, Amigo!"

"Halo, Ellie!"

"Dina iki kita bakal sinau aliran I / O."

"Ya, aku wis ngerti kabeh babagan dheweke. Kita nggunakake kelas FileInputStream lan FileOutputStream ing kene."

"Ya, lan metode kelas apa sing sampeyan ngerti?"

"Inggih. Punika cara FileInputStream:"

Metode Katrangan
int read() Maca siji bait lan bali.
int read(byte b[]) Maca array byte lan ngasilake.
int read(byte b[], int off, int len) Maca array byte saka stream.
long skip(long n) Skips n bita, digunakake nalika maca saka stream.
int available() Ngasilake jumlah bita sing isih bisa diwaca saka stream.
void close() Nutup stream.

"Spot on! Lan metode FileOutputStream?"

"Ndelok:"

Metode Katrangan
void write(int b) Nulis siji bait menyang stream.
void write(byte b[]) Nulis array bita menyang stream.
void write(byte b[], int off, int len) Nulis array bita menyang stream.
void close() Nutup stream.

"Amigo, sampeyan kaget aku!"

"Lan banjur sawetara!"

"Oke, banjur aku bakal menehi sampeyan rong kelas anyar: ZipInputStream lan ZipOutputStream."

FileInputStream, FileOutputStream, ZipOutputStream, ZipInputStream - 1

" Zip ? Apa iku kaya file zip?"

"Persis. Aliran iki dirancang kanggo nggarap file zip. Sampeyan bisa digunakake kanggo maca utawa nulis langsung menyang file zip!"

"Moly Suci! Carane menarik. Nanging file zip ora bisa duwe siji file, nanging sawetara. Carane padha bisa?"

"Kanggo sing, ana kelas khusus liyane: ZipEntry . Iku presents file sing disimpen ing arsip. Sampeyan mung bisa maca obyek ZipEntry saka ZipInputStream a , lan sampeyan mung bisa nulis obyek ZipEntry kanggo ZipOutputStream a . Nanging dadi metu sing bisa maca lan nulis menyang ZipEntry kaya file biasa."

"Apa sampeyan bisa menehi conto cara kerjane?"

"Mesthi. Iki conto ing ngendi kita nggawe arsip lan sijine file ing:"

Kode
// Create an archive
FileOutputStream zipFile = new FileOutputStream("c:/archive.zip");
ZipOutputStream zip = new ZipOutputStream(zipFile);

//Put a ZipEntry into it
zip.putNextEntry(new ZipEntry("document.txt"));

//Copy the file «document-for-archive.txt» to the archive under the name «document.txt»
File file = new File("c:/document-for-archive.txt");
Files.copy(file.toPath(), zip);

// Close the archive
zip.close();

"Carane menarik! Lan unzipping file kaya gampang?"

"Ya. Iki minangka katrangan ringkes babagan metode kelas ZipEntry , ZipInputStream   lan ZipOutputStream "

" ZipInputStream minangka stream, supaya kabeh ZipEntry mung bisa diwaca kanthi urutan. Iki cara:"

Metode Katrangan
ZipEntry getNextEntry() Ngasilake obyek sing njlèntrèhaké ZipEntry sabanjuré (skip kabeh bita ing entri saiki).
void closeEntry() Nutup stream input ing ZipEntry saiki (skip kabeh bita ing entri saiki).
int available() Ngasilake 1 ana ZipEntries kasedhiya, yen ora 0.
int read(byte[] b, int off, int len) Maca bita saka ZipEntry saiki.
long skip(long n) Skips n bita nalika maca saka stream.
void close() Nutup stream.

"Aku ora ngerti tenan."

"Sing paling apik kanggo mbayangno yen sampeyan maca file teks, lan ZipEntries kaya garis ing file. Sampeyan bisa maca data saka baris saiki ( ZipEntry saiki) utawa mlumpat saka baris menyang baris ( getNextEntry , closeEntry ) ."

"Aku rumangsa ngerti, nanging aku ora yakin."

"Iki ZipOutputStream lan cara:"

Metode Katrangan
void setComment(String comment) Nyetel komentar ing arsip.
void setMethod(int method) Nyetel cara kompresi (jinis).
void setLevel(int level) Nyetel tingkat komprèsi. Sing luwih dhuwur komprèsi, luwih alon.
void putNextEntry(ZipEntry e) Nambahake ZipEntry anyar.
void closeEntry() Nutup ZipEntry saiki
void write(byte[] b, int off, int len) Nulis sakumpulan bita menyang ZipEntry saiki.
void close() Nutup stream.

"Nanging ing conto ing ndhuwur kita meh ora nggunakake iki."

"Iki minangka cara opsional. Sampeyan ora kudu nemtokake tingkat kompresi lan cara - setelan gawan bakal digunakake."

"Hmm. Sing ora dadi ala. Lan ZipEntry?"

"Ya, mung informasi liyane ing ZipEntry yaiku informasi housekeeping:"

Metode Katrangan
String getName(), setName(String) File jeneng internal.
long getTime(), setTime(long) Wektu pungkasan entri diowahi.
long getCRC(), setCRC(long) Checksum.
long getSize(), setSize(long) Ukuran sadurunge komprèsi.
int getMethod(), setMethod(int) Metode kompresi.
long get/setCompressedSize() Ukuran sawise zipping.
boolean isDirectory() Apa entri iku direktori?

"Sing ora katon banget hard. Apa ora ana kanggo tresna!"

"Apik banget, banjur Diego bakal menehi tugas babagan topik iki uga."

"Aku kudune nutup cangkeme."