读取一个myzip.zip文件
读取一个myzip.zip文件 ,下面有mmm目录下有kk.txt文件、以及有bb.cpp文件
class Fileoperatefun{
public void func1(){
ZipInputStream mZipin = null;
File mfie = new File("./file/myzip.zip");
try {
mZipin = new ZipInputStream(new FileInputStream(mfie));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
ZipEntry mZipen = null;
ZipFile mZipFile = null;
InputStreamReader mm = null;
BufferedReader mm1 = null;
try {
mZipFile = new ZipFile("./file/myzip.zip");
System.out.println("zip is available:" + mZipin.available());
while((mZipen = mZipin.getNextEntry()) != null){
if(!mZipen.isDirectory()){
System.out.println("file:" + mZipen.getName() + " size:"+ mZipen.getSize());
mm =new InputStreamReader(mZipFile.getInputStream(mZipen));
mm1 = new BufferedReader(mm);
System.out.println(" read:" + mm1.readLine());
}else{
System.out.println( mZipen.getName() + "this is only directory ");
}
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
mm1.close();
mm.close();
mZipFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
读取结果:
zipfile :bb.cpp
zip is available:1
file:bb.cpp size:18
read:#include <nnb.h>
mmkt/this is only directory
mmm/this is only directory
file:mmm/kk.txt size:5
read:kkkk
使用Enumeration
public void fun3(String zipUrl){
ZipFile zipFile = null;
try{
zipFile = new ZipFile(zipUrl);
Enumeration<?> enumeration = zipFile.entries();
ZipEntry zipEntry = null;
while (enumeration.hasMoreElements()){
zipEntry = (ZipEntry) enumeration.nextElement();
System.out.println("file:" + zipEntry.getName().toLowerCase());
}
}catch (IOException e) {
e.printStackTrace();
}
}
遇到带密码的zip增加判断
JDK自带的ZIP操作接口(java.util.zip包,请参看文章末尾的博客链接)并不支持密码,甚至也不支持中文文件名
读取了zip的文件的头,第7位可以判断是否加密了
class Fileoperatefun{
public void func1(){
ZipInputStream mZipin = null;
File mfie = new File("./file/myzip.zip");
try {
mZipin = new ZipInputStream(new FileInputStream(mfie));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
ZipEntry mZipen = null;
ZipFile mZipFile = null;
InputStreamReader mm = null;
BufferedReader mm1 = null;
try {
byte[] ziphead = new byte[12];
BufferedInputStream m23 = new BufferedInputStream(new FileInputStream(mfie));
m23.read(ziphead);
for(int i = 0; i < ziphead.length; i++){
System.out.print(" "+ziphead[i]);
}
System.out.println("");
/*
if(ziphead[6] > 0){
System.out.println(" this is encrpte");
m23.close();
return;
}*/
mZipFile = new ZipFile("./file/myzip.zip");
System.out.println("zip is available:" + mZipin.available());
while((mZipen = mZipin.getNextEntry()) != null){
if(!mZipen.isDirectory()){
System.out.println("file:" + mZipen.getName() + " size:"+ mZipen.getSize());
mm =new InputStreamReader(mZipFile.getInputStream(mZipen));
mm1 = new BufferedReader(mm);
System.out.println(" read:" + mm1.readLine());
}else{
System.out.println( mZipen.getName() + "this is only directory ");
}
}
mm1.close();
mm.close();
mZipFile.close();
} catch (IOException e) {
e.printStackTrace();
}finally{
}
}
}