当前位置: 代码迷 >> 综合 >> zip解压文件 删除文件和文件目录
  详细解决方案

zip解压文件 删除文件和文件目录

热度:21   发布时间:2024-02-01 17:31:33.0
/*** 解压zip压缩文件* @param needFilePath 需要解压的文件地址* @param savePath 解压后文件保存地址* @throws Exception*/public static void unCompress(String needFilePath,String savePath) throws Exception {OutputStream os = null;InputStream is = null;//  获取当前需要解压的文件File srcFile = new File(needFilePath);if (!srcFile.exists()) {throw new Exception(srcFile.getPath() + "所指文件不存在");}// 插件保存的目录File pathFile = new File(savePath);if (!pathFile.exists()) {pathFile.mkdirs();}// 设置编码格式,防止中文名称目录读取不到和中文乱码ZipFile zip = new ZipFile(srcFile, Charset.forName("GBK"));Enumeration<? extends ZipEntry> entryEnum  = zip.entries();if (null != entryEnum) {ZipEntry zipEntry = null;while (entryEnum.hasMoreElements()) {zipEntry = (ZipEntry) entryEnum.nextElement();if (zipEntry.getSize() > 0) {File targetFile = FileUtilZip.buildFile(savePath+ File.separator + zipEntry.getName(), false);os = new BufferedOutputStream(new FileOutputStream(targetFile));is = zip.getInputStream(zipEntry);byte[] buffer = new byte[4096];int readLen = 0;while ((readLen = is.read(buffer, 0, 4096)) >= 0) {os.write(buffer, 0, readLen);os.flush();}is.close();os.close();}if (zipEntry.isDirectory()) {String pathTemp =  savePath + File.separator+ zipEntry.getName();File file = new File(pathTemp);file.mkdirs();}}}}

测试

public static void main(String[] args) {try {FileAboutZip.unCompress("F:\\project\\镇雄以勒项目2#清单.zip", "F:\\project\\zip");} catch (Exception e) {e.printStackTrace();}}

删除

// zip文件解压后保存得文件,在执行完导入之后需要删除文件// 删除文件夹下所有的文件public static boolean delAllFile(String path) {boolean flag = false;File file = new File(path);if (!file.exists()) {return flag;}if (!file.isDirectory()) {return flag;}String[] tempList = file.list();File temp = null;for (int i = 0; i < tempList.length; i++) {if (path.endsWith(File.separator)) {temp = new File(path + tempList[i]);} else {temp = new File(path + File.separator + tempList[i]);}if (temp.isFile()) {temp.delete();}if (temp.isDirectory()) {delAllFile(path + "/" + tempList[i]);//先删除文件夹里面的文件delFolder(path + "/" + tempList[i]);//再删除空文件夹flag = true;}}return flag;}// 删除文件夹public static void delFolder(String folderPath) {try {delAllFile(folderPath); //删除完里面所有内容String filePath = folderPath;filePath = filePath.toString();File myFilePath = new File(filePath);myFilePath.delete(); //删除空文件夹} catch (Exception e) {e.printStackTrace();}}

 

  相关解决方案