Mise en œuvre de la compression et de la décompression du format de compression ZIP via l'API Java
La copie de code est la suivante:
Package com.hongyuan.test;
Importer java.io.file;
import java.io.fileInputStream;
Importer java.io.fileOutputStream;
Importer java.io.ioException;
import java.io.inputStream;
import java.io.outputStream;
Importer Java.util.Enumeration;
Importer java.util.zip.zipentry;
import java.util.zip.zipfile;
Importer java.util.zip.zipOutputStream;
classe publique Ziptest {
public static void main (String [] args) lance ioException {
unzip ("bootstrap.zip");
zip ("bootstrap_01.zip", "bootstrap / css / bootstrap.css", "bootstrap / css / bootstrap.min.css");
}
public static void unzip (String FileName) lève ioException {
// Obtenez un objet de fichier compressé
Zipfile zf = new ZipFile (nom de fichier);
// transférer les entrées de fichiers
Énumération <??
while (items.hasmoreElements ()) {
Zipentry item = itels.nextElement ();
String filepath = zf.getName (). Substring (0,
zf.getName (). LastIndexof ("."))
+ File.separator + item.getName ();
Fichier filedir = nouveau fichier (filepath.substring (0,
filepath.LastIndexof ("/"));
if (! filedir.exists ()) {
filedir.mkDirs ();
}
// Lire le fichier depuis Stream
OutputStream out = new FileOutputStream (filepath);
InputStream dans = zf.getInputStream (item);
octet [] temp = nouveau octet [1024];
int len = 0;
while ((len = in.read (temp))> 0) {
out.write (temp, 0, len);
}
joindre();
out.close ();
}
zf.close ();
}
public static void zip (string filename, string ... files) lève ioException {
// Construisez le flux de sortie du fichier compressé
ZipOutputStream zos = new ZipOutputStream (new FileOutputStream (nom de fichier));
pour (int i = 0, size = files.length; i <size; i ++) {
// Créer une entité compressée
Zipentry Entry = new Zipentry (fichiers [i] .SubString (fichiers [i] .lastIndexof ("/") + 1));
ZOS.PUTNEXTENTRY (ENTRÉE);
// Sortie du contenu du fichier dans un flux compressé
InputStream est = new FileInputStream (fichiers [i]);
int count = 0;
octet [] tampon = nouveau octet [1024];
while ((count = is.read (tampon))> = 0) {
zos.write (tampon, 0, comte);
}
zos.flush ();
zos.closeEntry ();
is.close ();
}
}
}