对指定文件或目录进行压缩和解压缩的工具类总结(二)

2014-11-24 09:26:30 · 作者: · 浏览: 1
ion(e); } finally { IOHelper.close(zos); } } /** * 解压缩指定压缩文件(zip格式) * * @param src * 要解压缩的文件 * @param destBasePath * 解压缩后的文件存放的目录 */ public static void unZip(File src, File destBasePath) throws RuntimeException { ZipInputStream zis = null; BufferedOutputStream bos = null; byte[] b = new byte[8192]; try { zis = new ZipInputStream(new FileInputStream(src)); // 把压缩文件中获取到每个条目 for (java.util.zip.ZipEntry ze = null; (ze = zis.getNextEntry()) != null;) { // 压缩文件中的每个条目就对应目标目录下的一个文件 File file = new File(destBasePath, ze.getName()); File parentFile = file.getParentFile(); if (!parentFile.exists()) { // 如果父目录下存在,就先创建 file.getParentFile().mkdirs(); } // 针对文件创建出一个输出流 bos = new BufferedOutputStream(new FileOutputStream(file)); for (int len = 0; (len = zis.read(b)) != -1;) { bos.write(b, 0, len); } bos.flush(); bos.close(); } } catch (FileNotFoundException e) { throw new RuntimeException(e); } catch (IOException e) { throw new RuntimeException(e); } finally { IOHelper.close(zis); } } /** * 递归获取指定目录下的所有子孙文件 * * @param baseDir * 要递归的目录 * @param allSubFiles * 存放所有子孙文件的列表 */ public static void getAllSubFiles(File baseDir, List
allSubFiles) { if (baseDir.exists()) { // baseDir存在 if (baseDir.isDirectory()) { // 是目录 File[] subFiles = baseDir.listFiles(); // 获取它的所有子目录和了文件 int len = subFiles == null 0 : subFiles.length; for (int i = 0; i < len; i++) { getAllSubFiles(subFiles[i], allSubFiles); // 递归调用 } } else { allSubFiles.add(baseDir); } } } }