先说一下我遇到的问题
1.我首先是自己写的zip解压,解压的时候遇到一个视频结果报编码解压终止了
2.也是自己写的解压的时候遇到中文了可以解压结果乱码了!
解决方案:
用第三方apache-ant解决
注意这里开始遇到中文也是乱码的!!!
要设置一个下面的一个属性下面有注释
如果还是乱码则改一个编码格式
本来试过UTF-8,GBK
项目中用GBK和设置下面的属性解决问题!
下面请看源码
public static void unZipFile(String zipFileName,String decompressDir) throws IOException{
org.apache.tools.zip.ZipFile zip = new org.apache.tools.zip.ZipFile(zipFileName,"GBK");
Enumeration emt= zip.getEntries();
BufferedInputStream bi =null;
while(emt.hasMoreElements()){
org.apache.tools.zip.ZipEntry ze =(org.apache.tools.zip.ZipEntry) emt.nextElement();
String entryName =ze.getName();
String path = decompressDir+"/"+entryName;
if(ze.isDirectory()){
ze.setUnixMode(755);//解决linux乱码注意这个是设置目录
File docompressDirFile = new File(path);
if(!docompressDirFile.exists()){
docompressDirFile.mkdirs();
}
}else{
ze.setUnixMode(644);//解决linux乱码这个是设置文件
String fileDir = path.substring(0, path.lastIndexOf("/"));
File fileDirFile =new File(fileDir);
if(!fileDirFile.exists()){
fileDirFile.mkdirs();
}
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(decompressDir+"/"+entryName));
bi = new BufferedInputStream(zip.getInputStream(ze));
System.out.println("fsdfs"+decompressDir+"/"+entryName);
byte [] read = new byte[1024];
int readCount = bi.read(read);
while (readCount!=-1) {
bos.write(read,0,readCount);
readCount =bi.read(read);
}
bos.close();
}
}
zip.close();
}