Implementierung der Komprimierung und Dekompression des ZIP -Komprimierungsformats durch Java -API
Die Codekopie lautet wie folgt:
Paket com.hongyuan.test;
Import Java.io.file;
import Java.io.FileInputStream;
importieren java.io.fileoutputStream;
importieren java.io.ioException;
importieren java.io.inputstream;
importieren java.io.outputstream;
Import Java.util.Enumeration;
import Java.util.zip.zipentry;
Import Java.util.zip.zipfile;
import Java.util.zip.zipoutputStream;
öffentliche Klasse Ziptest {
public static void main (String [] args) löst ioException {aus
Unzip ("Bootstrap.zip");
ZIP ("Bootstrap_01.zip", "Bootstrap/CSS/Bootstrap.css", "Bootstrap/CSS/Bootstrap.min.css");
}
public static void Unzip (String Dateiname) löst ioException {aus
// Komprimiertes Dateiobjekt abrufen
Zipfile zf = neu zipfile (Dateiname);
// Dateieinträge übertragen
Aufzählung <?
while (items.hasmoreElements ()) {
Zipentry item = items.NextElement ();
String filepath = Zf.getName (). Substring (0,,
zf.getName (). lastIndexof (".")))
+ File.separator + item.getName ();
Fileedir = neue Datei (filepath.substring (0,,
filepath.lastindexof ("/"));
if (! farredir.exists ()) {
aveedir.mkdirs ();
}
// Datei aus Stream lesen
OutputStream out = new FileOutputStream (filepath);
InputStream in = zf.getInputStream (Element);
byte [] temp = new byte [1024];
int len = 0;
while ((len = in.read (temp))> 0) {
out.write (temp, 0, len);
}
in.close ();
out.close ();
}
Zf.CLOSE ();
}
public static void Zip (String -Dateiname, String ... Dateien) löst IOException {
// Konstruieren Sie den komprimierten Dateiausgabestrom
ZipoutputStream zos = neu zipoutputStream (neuer FileOutputStream (Dateiname));
für (int i = 0, size = files.length; i <size; i ++) {
// Erstellen Sie eine komprimierte Einheit
ZIPEntry -Eintrag = neu Zipentry (Dateien [i] .Substring (Dateien [i] .LastIndexof ("/")+1));
Zos.putNextEntry (Eintrag);
// Dateiinhalte in komprimierter Stream ausgeben
InputStream ist = neuer FileInputStream (Dateien [i]);
int count = 0;
byte [] buffer = neues byte [1024];
while ((count = is.read (puffer))> = 0) {
Zos.Write (Puffer, 0, Graf);
}
zos.flush ();
zos.closeEventry ();
is.close ();
}
}
}