Android Zip解压的问题

本文详细介绍了在使用自定义代码解压包含中文和视频的ZIP文件时遇到乱码问题的原因,并提供了使用Apache-ANT解决乱码问题的方案。包括设置编码属性、解决不同操作系统的乱码问题等,最终通过代码实现了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先说一下我遇到的问题

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

    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值