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

时间:2021-07-14 02:32:24

用的apache的ant包,下载导入即可。由于过程比较简单,直接上代码。

代码可直接复制使用。

如果想在android上使用,记得要在AndroidManifest.xml里添加权限:

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.ZipException; import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile; /**
* 可以处理中文文件名
*/
public class jieya { public static void main(String[] args) { /**
* 解压文件
*/
File zipFile = new File("e:/压缩sdhjk.rar"); String path = "e:/zipfile/"; try { unZipFiles(zipFile, path); } catch (Exception e) { System.out.println("解压异常"); }
} /**
* 解压到指定目录
*
* @param zipPath
* @param descDir
* @author isea533
*/
public static void unZipFiles(String zipPath, String descDir) { try { unZipFiles(new File(zipPath), descDir); } catch (Exception e) { e.printStackTrace();
}
} /**
* 解压文件到指定目录
*
* @param zipFile
* @param descDir
* @author isea533
*/
@SuppressWarnings("rawtypes")
public static void unZipFiles(File zipFile, String descDir) { File pathFile = new File(descDir); if (!pathFile.exists()) { pathFile.mkdirs(); } try { ZipFile zip = new ZipFile(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 (new File(outPath).isDirectory()) { continue; }
// 输出文件路径信息
System.out.println(outPath); OutputStream out = new FileOutputStream(outPath); byte[] buf1 = new byte[1024]; int len; 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("******************解压完毕********************");
} }