import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import org.apache.tools.zip.ZipOutputStream; public class ZipUtil { /** * 压缩文件(包括子目录) * * @param baseDir * 要压缩的文件夹(物理路径) * @param fileName * 保存的文件名称(物理文件路径) * @throws Exception */ public static void zipFile(String baseDir, String fileName) throws Exception { List<File> fileList = getSubFiles(new File(baseDir)); ZipOutputStream zos = new ZipOutputStream( new FileOutputStream(fileName)); // zos.setEncoding("UTF-8");// 设置编码,解决中文乱码的问题 ZipEntry ze = null; byte[] buf = new byte[1024]; int readLen = 0; for (int i = 0; i < fileList.size(); i++) { File f = fileList.get(i); ze = new ZipEntry(getAbsFileName(baseDir, f)); ze.setSize(f.length()); ze.setTime(f.lastModified()); zos.putNextEntry(ze); InputStream is = new BufferedInputStream(new FileInputStream(f)); while ((readLen = is.read(buf, 0, 1024)) != -1) { zos.write(buf, 0, readLen); } is.close(); } zos.closeEntry(); zos.close(); } /** * 给定根目录,返回另一个文件名的相对路径,用于zip文件中的路径. * * @param baseDir * java.lang.String 根目录 * @param realFileName * java.io.File 实际的文件名 * @return 相对文件名 */ private static String getAbsFileName(String baseDir, File realFileName) { File real = realFileName; File base = new File(baseDir); String ret = real.getName(); while (true) { real = real.getParentFile(); if (real == null) break; if (real.equals(base)) break; else ret = real.getName() + "/" + ret; } return ret; } /** * 取得指定目录下的所有文件列表,包括子目录. * * @param baseDir * File 指定的目录 * @return 包含java.io.File的List */ private static List<File> getSubFiles(File baseDir) { List<File> ret = new ArrayList<File>(); File[] tmp = baseDir.listFiles(); for (int i = 0; i < tmp.length; i++) { if (tmp[i].isFile()) { ret.add(tmp[i]); } if (tmp[i].isDirectory()) { ret.addAll(getSubFiles(tmp[i])); } } return ret; } /** * 解压缩功能. 将ZIP_FILENAME文件解压到ZIP_DIR目录下. * * @param zipFileName * ZIP文件物理路径 * @param zipDir * @throws Exception */ @SuppressWarnings("unchecked") public static void unZipFile(String zipFileName, String zipDir) throws Exception { ZipFile zip = new ZipFile(zipFileName); Enumeration<ZipEntry> en = zip.getEntries(); ZipEntry entry = null; byte[] buffer = new byte[1024]; int length = -1; InputStream input = null; BufferedOutputStream bos = null; File file = null; while (en.hasMoreElements()) { entry = en.nextElement(); if (entry.isDirectory()) { file = new File(zipDir, entry.getName()); if (!file.exists()) { file.mkdir(); } continue; } input = zip.getInputStream(entry); file = new File(zipDir, entry.getName()); if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } bos = new BufferedOutputStream(new FileOutputStream(file)); while (true) { length = input.read(buffer); if (length == -1) { break; } bos.write(buffer, 0, length); } bos.close(); input.close(); } zip.close(); } public static void deleteDirFiles(String filePath) { File dir = new File(filePath); if (dir.exists() && dir.isDirectory()) { File[] files = dir.listFiles(); for (File file : files) { file.delete(); } } dir.delete(); } }
相关推荐
1初始化(创建)压缩文件 2添加指定文件到压缩文件 3添加指定文件夹(含子路径)到压缩文件 4重新初始化(打开)压缩文件 5从压缩文件解压文件 6释放(关闭)压缩文件 源码包含了封装的功能模块类以及测试类, 全部...
VB6.0压缩文件、解压文件、合并文件源码实例,这个小工具的用处在于:你可以把图片文件和压缩文件合并起来,传到网上相册中,既保存了图片,同时也把你的文件(可以合并个人隐私文件哦!)传了上去。打开这个文件时...
-m0 存储 添加到压缩文件时不压缩文件。 -m1 最快 使用最快方式(低压缩) -m2 较快 使用快速压缩方式 -m3 标准 使用标准(默认)压缩方式 -m4 较好 使用较好压缩方式(较好压缩,但是慢) -m5 最好 使用最大压缩方式(最好...
压缩文件方法 该方法需要引用zip4j的jar文件 单个文件、多个文件压缩 /** * 使用给定密码压缩指定文件或文件夹到指定位置. * * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者""....
使用方法是把图片放在第一位,压缩文件放在第二位 点击合成,输出的文件用图片的拓展名,比如jpg就是图片 改为rar.即合并的压缩文件的拓展名,文件即为压缩文件 本软件为java编写,没有打包jre所以需要自行安装jre. 安装...
本人整理及修改的.net压缩文件或压缩文件夹源码 包里有源码、帮助类、操作文档、相关DLL及DLL引用说明文档 对压缩程序有任何疑问请随时私信我
批处理压缩文件的 bat文件,https://blog.csdn.net/weixin_43960383/article/details/124261084 详细可参考我的这篇文章;
批处理批量压缩当前文件夹下所有指定后缀名文件,批处理批量压缩指定类型文件为每个单独压缩包。 使用前解压本压缩包 本压缩包内容由WinRaR.exe文件与bat文件组成,使用时需要将所需打包的同类型文件放置到WinRaR....
VC++ MFC 如何用 CZip CUnzip类压缩解压缩文件 包括源代码和Example文件,还有说明文件~
在右键增加操作菜单 把每个文件放到单独的压缩文件中
很强大的软件 暴力破解压缩文件密码 可以破解出来
压缩与解压缩文件 C++ 压缩与解压缩文件 C++ vc6
net打包文件 net 压缩文件 使用net内置方法压缩文件
批量压缩文件脚本 方便批量压缩文件,请自行修改脚本里的路径,其实我是混分的,这个脚本适合我一样的小白用
WIN ZIP 压缩文件 的破解
RAR压缩文件密码破解 RAR压缩文件密码破解
遍历指定文件夹及其子文件夹下的所有压缩文件,批量用7z软件解压,并实时显示解压进度。
JAVA压缩文件代码 HUFFMAN函数的压缩代码
便压(BianYa)是强大的压缩文件管理器,它提供了ZIP和7Z文件的完整支持,能解压RAR、 ZIP、7Z、ACE、ARJ、BZ2、CAB、GZ、ISO、JAR、LAH、TAR、Z、UUE、格式文件。 独特的压缩和加密算法, 对常用的文本、音乐、图像...
易语言解压目录中的所有压缩文件源码.7z