`

Java 对zip中文件基于大小的对比处理

    博客分类:
  • java
阅读更多

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 Image Filters.zip 基于java的开发源码-图像处理类库 ...

    基于java的开发源码-iCHAT聊天室基于Java.zip

    基于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 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.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的开发源码-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的开发源码-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的开发源码-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的开发源码-Jease Java CMS.zip 基于java的...

    Java 基于swing 坦克游戏.zip

    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向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博客系统.zip 基于java的开发源码-Tale Java博客系统...

    基于java的开发源码-OpenJDK Java开发环境.zip

    基于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的开发源码-Symphony Java社区平台.zip 基于java的开发源码-...

    基于java的开发源码-Solo Java开源博客.zip

    基于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的开发源码-Ehcache Java 缓存框架.zip 基于java的开发源码-...

    基于java的开发源码-PublicCMS开源Java系统.zip

    基于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模板引擎.zip 基于java的开发源码-Beetl java...

Global site tag (gtag.js) - Google Analytics