java解压中文文件报错_java zip文件的解压缩(支持中文文件名)

这个Java程序展示了如何正确地解压包含中文文件名的ZIP文件,使用了Apache的ZipFile类来处理可能出现的编码问题。通过遍历ZIP条目,创建必要的目录并写入文件内容,确保中文文件名能够正确解压到指定目录。
摘要由CSDN通过智能技术生成

importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.Enumeration;importjava.util.zip.ZipException;importorg.apache.tools.zip.ZipEntry;importorg.apache.tools.zip.ZipFile;/*** 可以处理中文文件名*/

public classjieya {public static voidmain(String[] args) {/*** 解压文件*/File zipFile= new File("e:/压缩sdhjk.rar");

String path= "e:/zipfile/";try{

unZipFiles(zipFile, path);

}catch(Exception e) {

System.out.println("解压异常");

}

}/*** 解压到指定目录

*

*@paramzipPath

*@paramdescDir

*@authorisea533*/

public static voidunZipFiles(String zipPath, String descDir) {try{

unZipFiles(newFile(zipPath), descDir);

}catch(Exception e) {

e.printStackTrace();

}

}/*** 解压文件到指定目录

*

*@paramzipFile

*@paramdescDir

*@authorisea533*/@SuppressWarnings("rawtypes")public static voidunZipFiles(File zipFile, String descDir) {

File pathFile= newFile(descDir);if (!pathFile.exists()) {

pathFile.mkdirs();

}try{

ZipFile zip= newZipFile(zipFile);for (Enumeration entries =zip.getEntries(); entries

.hasMoreElements();) {

ZipEntry entry=(ZipEntry) entries.nextElement();

String zipEntryName=entry.getName();

InputStream in=zip.getInputStream(entry);

String outPath= (descDir +zipEntryName)

.replaceAll("\*", "/");//判断路径是否存在,不存在则创建文件路径

File file = new File(outPath.substring(0,

outPath.lastIndexOf('/')));if (!file.exists()) {

file.mkdirs();

}//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压

if (newFile(outPath).isDirectory()) {continue;

}//输出文件路径信息

System.out.println(outPath);

OutputStream out= newFileOutputStream(outPath);byte[] buf1 = new byte[1024];intlen;while ((len = in.read(buf1)) > 0) {

out.write(buf1,0, len);

}

in.close();

out.close();

}

}catch(ZipException e) {

e.printStackTrace();

System.out.println("压缩文件打开异常");

}catch(FileNotFoundException e) {

e.printStackTrace();

System.out.println("文件没有找到");

}catch(IOException e) {

e.printStackTrace();

System.out.println("io异常");

}

System.out.println("******************解压完毕********************");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值