boolean fileInclude = false;
if ("".equals(includedFile)) {
includedFile = null;
}
ZipInputStream zis = null;
BufferedOutputStream dest = null;
try {
final int BUFFER = 20480;
FileInputStream fis = new FileInputStream(f);
CheckedInputStream checksum = new CheckedInputStream(fis
, new Adler32());
// zis = new CZipInputStream(new BufferedInputStream(fis),"GBK");
zis = new ZipInputStream(new BufferedInputStream(fis));
ZipEntry entry;
new File(directory).mkdirs();
while ( (entry = zis.getNextEntry()) != null) {
// tmpFileName = new String(entry.getName().getBytes("GBK"));
tmpFileName = new String(entry.getName());
int count;
byte data[] = new byte[BUFFER];
// write the files to the disk
String fn = directory + "/" + tmpFileName;
if (entry.isDirectory()) {
new File(fn).mkdirs();
continue;
} else {
if (includedFile == null
|| tmpFileName.equalsIgnoreCase(includedFile)) {
fileName = tmpFileName;
fileInclude = true;
}
filecount++;
if (!new File(fn).getParentFile().exists()) {
new File(fn).getParentFile().mkdirs();
}
new File(fn).createNewFile();
}
FileOutputStream fos = new FileOutputStream(fn);
dest = new BufferedOutputStream(fos, BUFFER);
while ( (count = zis.read(data, 0, BUFFER)) != -1) {
dest.write(data, 0, count);
}
dest.flush();
dest.close();
}
zis.close();
}