Implementasi kompresi dan dekompresi format kompresi zip melalui Java API
Salinan kode adalah sebagai berikut:
paket com.hongyuan.test;
impor java.io.file;
impor java.io.fileInputStream;
impor java.io.fileoutputStream;
impor java.io.ioException;
impor java.io.inputstream;
impor java.io.outputStream;
impor java.util.enumeration;
impor java.util.zip.zipentry;
impor java.util.zip.zipfile;
impor java.util.zip.zipoutputStream;
kelas publik ziptest {
public static void main (string [] args) melempar ioException {
unzip ("bootstrap.zip");
zip ("bootstrap_01.zip", "bootstrap/css/bootstrap.css", "bootstrap/css/bootstrap.min.css");
}
public static void unzip (string fileName) melempar ioException {
// Dapatkan objek file terkompresi
Zipfile zf = zipfile baru (nama file);
// Transfer entri file
Enumerasi <?
while (items.hasmoreElements ()) {
Item zipentry = items.nextElement ();
String filepath = zf.getName (). Substring (0,
zf.getName (). LastIndexof ("."))
+ File.separator + item.getName ();
File FileDir = File Baru (FilePath.substring (0,
filepath.LastIndexOf ("/"));
if (! filedir.exists ()) {
filedir.mkdirs ();
}
// Baca file dari stream
OutputStream out = FileOutputStream baru (FilePath);
InputStream in = zf.getInputStream (item);
byte [] temp = byte baru [1024];
int len = 0;
while ((len = in.read (temp))> 0) {
out.write (temp, 0, len);
}
melampirkan();
out.close ();
}
zf.close ();
}
public static void zip (string fileName, string ... file) melempar ioException {
// Bangun aliran output file terkompresi
ZipoutputStream zos = new zipoutputStream (fileoutputStream baru (nama file));
untuk (int i = 0, size = file.length; i <size; i ++) {
// Buat entitas terkompresi
Entri zipentry = zipEntry baru (file [i] .substring (file [i] .lastIndexOf ("/")+1));
zos.putNextEntry (entri);
// Isi file output ke dalam aliran terkompresi
InputStream adalah = FileInputStream baru (file [i]);
Int Count = 0;
byte [] buffer = byte baru [1024];
while ((count = is.read (buffer))> = 0) {
zos.write (buffer, 0, count);
}
zos.flush ();
zos.closeentry ();
is.close ();
}
}
}