/** * 解析zip文件 * @param parseFile */ private boolean parseZipFile(File parseFile) { //指定解压目录 String dirParsePath = "D:\\ftp\\tempFtpFile\\zip"; boolean flag = false; File pathFile = new File(dirParsePath); if(!pathFile.exists()){ pathFile.mkdirs(); } ZipFile zip = null; try { //指定编码,否则压缩包里面不能有中文目录 zip = new ZipFile(parseFile, Charset.forName("gbk")); for(Enumeration entries = zip.entries(); entries.hasMoreElements();){ ZipEntry entry = (ZipEntry)entries.nextElement(); String zipEntryName = entry.getName(); String filterName = zipEntryName.split("\\.")[1].toLowerCase(); if(filterName.contains("o")||filterName.contains("m")||filterName.contains("n")) { fileName +=zipEntryName+","; InputStream in = zip.getInputStream(entry); String outPath = (dirParsePath+zipEntryName).replace("/", File.separator); //判断路径是否存在,不存在则创建文件路径 File file = new File(outPath.substring(0, outPath.lastIndexOf(File.separator))); if(!file.exists()){ file.mkdirs(); } //判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压 if(new File(outPath).isDirectory()){ continue; } //保存文件路径信息 // urlList.add(outPath); 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(); } } //必须关闭,否则无法删除该zip文件 zip.close(); flag = true; } catch (Exception e) { logger.info("文件解析出错:文件名------->"+parseFile.getName()); e.printStackTrace(); } return flag; }