Hallo, hab mal ne kleine Frage:
Ich benutze folgenden Code um ein zip-Archiv zu entpacken. Jetzt will ich noch eine Anzeige machen, die zeigt wieviel Prozent schon entpackt sind, wie geht das am besten?
Ich benutze folgenden Code um ein zip-Archiv zu entpacken. Jetzt will ich noch eine Anzeige machen, die zeigt wieviel Prozent schon entpackt sind, wie geht das am besten?
Code:
package de.tutorials;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class ZipArchiveExtractor {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
new ZipArchiveExtractor().extractArchive(new File(
"c:/tmp/xdoclet-bin-1.2.3.zip"), new File("c:/tmp/x"));
}
public void extractArchive(File archive, File destDir) throws Exception {
if (!destDir.exists()) {
destDir.mkdir();
}
ZipFile zipFile = new ZipFile(archive);
Enumeration entries = zipFile.entries();
byte[] buffer = new byte[16384];
int len;
while (entries.hasMoreElements()) {
ZipEntry entry = (ZipEntry) entries.nextElement();
String entryFileName = entry.getName();
if (entry.isDirectory()) {
File dir = new File(destDir, entryFileName);
// System.out.println(dir);
if (!dir.exists()) {
dir.mkdir();
}
} else {
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(new File(destDir, entryFileName)));
BufferedInputStream bis = new BufferedInputStream(zipFile
.getInputStream(entry));
while ((len = bis.read(buffer)) > 0) {
bos.write(buffer, 0, len);
}
bos.flush();
bos.close();
bis.close();
}
}
}
}