private void initCacheFile(){
ZipEntry entry = null;
String strEntry = null;
final int buffer=1024;
int count=-1;
InputStream is = null;
BufferedInputStream bis;
ZipInputStream zis;
FileOutputStream fos=null;
File entryFile=null;
try {
is = getAssets().open("httpCach_home.zip");
BufferedOutputStream dest = null;
bis = new BufferedInputStream(is);
zis = new ZipInputStream(bis);
byte data[] = new byte[1024];
while((entry = zis.getNextEntry()) != null ){
strEntry = entry.getName();
if(entry.isDirectory()){
File zipFolder = new File(strEntry);
if (!zipFolder.exists()) {
zipFolder.mkdirs();
}
}else{
entryFile = new File(cache +"/"+ strEntry);
if (!entryFile.exists()) {
File parFile = entryFile.getParentFile();
parFile.mkdirs();
entryFile.createNewFile();
}
fos = new FileOutputStream(entryFile);
dest = new BufferedOutputStream(fos, buffer);
while ((count = zis.read(data, 0, buffer)) != -1) {
dest.write(data, 0, count);
}
}
}
dest.flush();
dest.close();
fos.close();
zis.close();
bis.close();
is.close();
flag = false;
} catch (IOException e){
e.printStackTrace();
}
}
这个和一般的文件读写差不多,唯一的区别是通ZipInputStream的getNextEntry获取包里面的每一个ZipEntry,然后就是往文件里面写数据,这里多了一个判断就是判断是文件还是目录,如果是目录话,用OutputStream写操作,会出现错误。
java解压zip包
最新推荐文章于 2024-07-19 11:21:53 发布