Android Zip解压的问题

来源:互联网 发布:百旺金赋税控软件 编辑:程序博客网 时间:2024/05/22 13:43

先说一下我遇到的问题

1.我首先是自己写的zip解压,解压的时候遇到一个视频结果报编码解压终止了

2.也是自己写的解压的时候遇到中文了可以解压结果乱码了!

解决方案:

用第三方apache-ant解决

注意这里开始遇到中文也是乱码的!!!

要设置一个下面的一个属性下面有注释

如果还是乱码则改一个编码格式

本来试过UTF-8,GBK

项目中用GBK和设置下面的属性解决问题!

下面请看源码

public staticvoid 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();

    }



0 0