/** * 解压文件 * * @param zipFile 目标文件 * @param descDir 指定解压目录 */ public Map<String, String> unZip(File zipFile, String descDir) { boolean flag = false; File pathFile = new File(descDir); if (!pathFile.exists()) { pathFile.mkdirs(); } ZipFile zip = null; Map<String, String> dmap = new HashMap<String, String>(); try { //指定编码,否则压缩包里面不能有中文目录 zip = new ZipFile(zipFile, Charset.forName("gbk")); for (Enumeration entries = zip.entries(); entries.hasMoreElements(); ) { ZipEntry entry = (ZipEntry) entries.nextElement(); String zipEntryName = entry.getName(); dmap.put("path", descDir);//从这边获取到要打开的.cfg文件 InputStream in = zip.getInputStream(entry); String outPath = (descDir + zipEntryName).replace("/", File.separator); if (zipEntryName.endsWith("CFG")) { dmap.put("filename", zipEntryName); } //判断路径是否存在,不存在则创建文件路径 File file = new File(outPath.substring(0, outPath.lastIndexOf(File.separator))); if (!file.exists()) { file.mkdirs(); } //判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压 if (new File(outPath).isDirectory()) { continue; } //保存文件路径信息 OutputStream out = new FileOutputStream(outPath); byte[] buf1 = new byte[2048]; int len; while ((len = in.read(buf1)) > 0) { out.write(buf1, 0, len); } in.close(); out.close(); } flag = true; //必须关闭,否则无法删除该zip文件 zip.close(); } catch (IOException e) { e.printStackTrace(); } return dmap; }
java 解压文件
最新推荐文章于 2022-03-13 10:17:09 发布
这个Java代码片段展示了如何使用GBK编码解压包含中文文件名的ZIP文件,并将内容保存到指定目录。它遍历ZIP条目,检查是否为CFG文件,并创建必要的文件路径。解压过程中注意了文件夹的创建和文件的写入操作。
摘要由CSDN通过智能技术生成