zip文件可以通过ZipFile类得到初始化时传入文件名filename new ZipFile(filename );
获得zip文件后可以根据每个子文件大小和子文件的名字构建map,传入ZipFile.entries()到下面方法可构建
private static Map<String, Long> getZipEntriesSizeMap(
Enumeration<? extends ZipEntry> entries) {
Map<String, Long> fileMap = new HashMap<String, Long>();
while (entries.hasMoreElements()) {
ZipEntry first = entries.nextElement();
fileMap.put(first.getName(), first.getSize());
}
return fileMap;
}
获得map后可以根据两个map中的key进行对比value值
Iterator<String> ite = firstMap.keySet().iterator();
while (ite.hasNext()) {
String fileName = ite.next();
if (secondMap.containsKey(fileName)) {
if (firstMap.get(fileName).equals(secondMap.get(fileName))) {
// when the file in first zip and second zip is same i
// remove it
secondMap.remove(fileName);
} else {
// 添加到一个定义的输出列中
}
}
对比时应对比两次 即第一个zip包生成的map和第二个比对后,应把第二个和第一个再次比对,因为双方都有可能有对方所没有的文件
而对于子文件是jar文件或者zip文件时也可以进行比较代码如下
if (file.getName().lastIndexOf(".jar") != -1 || file.getName().lastIndexOf(".zip") != -1) {
InputStream in = zipfile.getInputStream(file);
temp = File.createTempFile("leotemp", ".tmp");
temp.deleteOnExit();
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(temp));
byte[] buffer = new byte[2048];
int nBytes = 0;
while ((nBytes = in.read(buffer)) > 0) {
out.write(buffer, 0, nBytes);
}
out.close();
ZipFile subzip = new ZipFile(temp);
subzip.entries();
if(parentPath != null && parentPath.trim() != ""){
fileMap.putAll(getZipEntriesSizeMap(subzip ,parentPath+" : "+file.getName()));
}else{
fileMap.putAll(getZipEntriesSizeMap(subzip ,file.getName()));
}
temp.delete();
}
parentPath为父文件的路径名字,第一传入时可以为空或者""
一般我会输出为一个xml文件,xml文件利用dom4j的jar包很容易创建并实现值得注意的只有一点,工具制作成jar包运行时,内部的路径应为相对路径即首字符应为"/包名/文件名"形式才能被访问到
分享到:
相关推荐
基于java的开发源码-图像处理类库 Java Image Filters.zip 基于java的开发源码-图像处理类库 Java Image Filters.zip 基于java的开发源码-图像处理类库 Java Image Filters.zip 基于java的开发源码-图像处理类库 ...
基于java的开发源码-iCHAT聊天室基于Java.zip 基于java的开发源码-iCHAT聊天室基于Java.zip 基于java的开发源码-iCHAT聊天室基于Java.zip 基于java的开发源码-iCHAT聊天室基于Java.zip 基于java的开发源码-iCHAT聊天...
基于java的开发源码-Google API for Java.zip 基于java的开发源码-Google API for Java.zip 基于java的开发源码-Google API for Java.zip 基于java的开发源码-Google API for Java.zip 基于java的开发源码-Google ...
基于java的开发源码-CKFinder 文件管理器 for java.zip 基于java的开发源码-CKFinder 文件管理器 for java.zip 基于java的开发源码-CKFinder 文件管理器 for java.zip 基于java的开发源码-CKFinder 文件管理器 for ...
基于java的开发源码-CKFinder文件管理器for Java.zip 基于java的开发源码-CKFinder文件管理器for Java.zip 基于java的开发源码-CKFinder文件管理器for Java.zip 基于java的开发源码-CKFinder文件管理器for Java.zip ...
基于java的开发源码-PHPJava Bridge.zip 基于java的开发源码-PHPJava Bridge.zip 基于java的开发源码-PHPJava Bridge.zip 基于java的开发源码-PHPJava Bridge.zip 基于java的开发源码-PHPJava Bridge.zip 基于java的...
基于java的开发源码-Java EasyCms框架.zip 基于java的开发源码-Java EasyCms框架.zip 基于java的开发源码-Java EasyCms框架.zip 基于java的开发源码-Java EasyCms框架.zip 基于java的开发源码-Java EasyCms框架.zip ...
基于java的开发源码-Jease Java CMS.zip 基于java的开发源码-Jease Java CMS.zip 基于java的开发源码-Jease Java CMS.zip 基于java的开发源码-Jease Java CMS.zip 基于java的开发源码-Jease Java CMS.zip 基于java的...
Java 基于swing 坦克游戏.zipJava 基于swing 坦克游戏.zip Java 基于swing 坦克游戏.zipJava 基于swing 坦克游戏.zip Java 基于swing 坦克游戏.zipJava 基于swing 坦克游戏.zip Java 基于swing 坦克游戏.zipJava ...
基于java的开发源码-贴心Java盒子.zip 基于java的开发源码-贴心Java盒子.zip 基于java的开发源码-贴心Java盒子.zip 基于java的开发源码-贴心Java盒子.zip 基于java的开发源码-贴心Java盒子.zip 基于java的开发源码-...
主要介绍了基于Java向zip压缩包追加文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
基于java的开发源码-基于Java实现的简单扫雷游戏源码.zip 基于java的开发源码-基于Java实现的简单扫雷游戏源码.zip 基于java的开发源码-基于Java实现的简单扫雷游戏源码.zip 基于java的开发源码-基于Java实现的简单...
基于java的开发源码-Tale Java博客系统.zip 基于java的开发源码-Tale Java博客系统.zip 基于java的开发源码-Tale Java博客系统.zip 基于java的开发源码-Tale Java博客系统.zip 基于java的开发源码-Tale Java博客系统...
基于java的开发源码-OpenJDK Java开发环境.zip 基于java的开发源码-OpenJDK Java开发环境.zip 基于java的开发源码-OpenJDK Java开发环境.zip 基于java的开发源码-OpenJDK Java开发环境.zip 基于java的开发源码-...
基于java的开发源码-Symphony Java社区平台.zip 基于java的开发源码-Symphony Java社区平台.zip 基于java的开发源码-Symphony Java社区平台.zip 基于java的开发源码-Symphony Java社区平台.zip 基于java的开发源码-...
基于java的开发源码-Solo Java开源博客.zip 基于java的开发源码-Solo Java开源博客.zip 基于java的开发源码-Solo Java开源博客.zip 基于java的开发源码-Solo Java开源博客.zip 基于java的开发源码-Solo Java开源博客...
基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-...
基于java的开发源码-PublicCMS开源Java系统.zip 基于java的开发源码-PublicCMS开源Java系统.zip 基于java的开发源码-PublicCMS开源Java系统.zip 基于java的开发源码-PublicCMS开源Java系统.zip v基于java的开发源码-...
基于java的开发源码-Beetl java模板引擎.zip 基于java的开发源码-Beetl java模板引擎.zip 基于java的开发源码-Beetl java模板引擎.zip 基于java的开发源码-Beetl java模板引擎.zip 基于java的开发源码-Beetl java...