`

java 增量打包工具

    博客分类:
  • java
 
阅读更多
主要代码

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class Main
{

	private ConfigUtil util;
	private int count;
	private String zipName;

	public Main()
	{
		util = ConfigUtil.getInstance();
	}

	public static void main(String args[])
		throws Exception
	{
		Main t = new Main();
		t.doCopy();
		System.out.println();
		System.out.println((new StringBuilder("total file: ")).append(t.count).toString());
		System.out.println((new StringBuilder("created zip file: ")).append(t.zipName).toString());
	}

	private void doCopy()
		throws IOException
	{
//读取需要打包的文件
		File f = new File("file.properties");
		BufferedReader reader = new BufferedReader(new FileReader(f));
		zipName = (new StringBuilder(String.valueOf(util.getDescFolder()))).append(util.getZipFileName()).toString();
//准备Zip包 进行打包
		ZipOutputStream zipStream = new ZipOutputStream(new FileOutputStream(zipName));
		File temp = null;
		for (String line = null; (line = reader.readLine()) != null;)
		{
			line = line.trim();
			if (line.length() != 0)
			{
				if (line.startsWith(util.getSrcFolder()))
					line = (new StringBuilder(String.valueOf(util.getClassFolder()))).append(line.substring(util.getSrcFolder().length())).toString();
				if (line.endsWith(".java"))
				{
					line = line.replaceFirst("\\.java", "\\.class");
					temp = new File(line);
					copySinleFile(zipStream, temp);
					File files[] = temp.getParentFile().listFiles();
					File afile[];
					int j = (afile = files).length;
					for (int i = 0; i < j; i++)
					{
						File child = afile[i];
						if (isRelatedClassFile(child, temp))
							copySinleFile(zipStream, child);
					}

				} else
				{
					temp = new File(line);
					if (temp.isDirectory())
						copyChildFiles(zipStream, temp);
					else
						copySinleFile(zipStream, temp);
				}
			}
		}

		reader.close();
		zipStream.close();
	}

	private void copySinleFile(ZipOutputStream zipStream, File src)
		throws IOException
	{
		String desc = src.getAbsolutePath().substring(util.getRootFolder().length());
		zipStream.putNextEntry(new ZipEntry(desc));
		FileInputStream fis = new FileInputStream(src);
		byte buf[] = new byte[1024];
		for (int i = 0; (i = fis.read(buf)) != -1;)
			zipStream.write(buf, 0, i);

		zipStream.closeEntry();
		fis.close();
		count++;
		System.out.println((new StringBuilder("add File: ")).append(desc).toString());
	}

	private void copyChildFiles(ZipOutputStream zipStream, File folder)
		throws IOException
	{
		File files[] = folder.listFiles();
		File afile[];
		int j = (afile = files).length;
		for (int i = 0; i < j; i++)
		{
			File f = afile[i];
			if (f.isDirectory())
				copyChildFiles(zipStream, f);
			else
				copySinleFile(zipStream, f);
		}

	}

	private boolean isRelatedClassFile(File child, File temp)
	{
		String childName = child.getName();
		boolean value = false;
		if (childName.endsWith(".class"))
		{
			childName = childName.substring(0, childName.length() - 6);
			String tempName = temp.getName().substring(0, temp.getName().length() - 6);
			value = childName.startsWith((new StringBuilder(String.valueOf(tempName))).append("$").toString());
		}
		return value;
	}
}

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    JAVA增量包打包工具

    "JAVA增量包打包工具"就是针对这一需求而设计的专业桌面应用程序,旨在帮助开发者实现自动化、高效的Web项目增量打包和发布。这款工具支持多种版本控制系统,包括Gitee(国内的Git托管平台)、Git和SVN,为多模块...

    java增量更新打包工具

    Java增量更新打包工具是一种在软件开发中非常实用的工具,它能够帮助开发者高效地处理应用程序的更新问题。在传统的更新方式中,用户需要下载整个应用的新版本,这不仅浪费网络资源,也可能因为文件大小而让用户等待...

    svn增量打包小工具

    【svn增量打包小工具】是一种基于Java开发的实用程序,专为IT专业人士设计,用于高效地管理和打包在Subversion(svn)版本控制系统中的代码更改。这个小工具的主要目的是简化版本控制过程,特别是在处理大型项目时,...

    ideploy 打包工具javaweb 增量打包工具

    `ideploy`就是这样一款专门针对Java Web应用的增量打包工具,它优化了传统的打包流程,提升了开发效率。本文将深入探讨ideploy的功能、工作原理以及如何使用它进行增量打包。 **1. ideploy简介** ideploy是一款专...

    增量打包工具

    增量打包工具是软件开发过程中非常实用的一种工具,它主要用于提高软件发布和更新的效率。在传统的打包过程中,每次发布新版本都需要将整个项目的所有文件重新打包,这不仅消耗时间,而且在网络传输上也浪费了大量的...

    增量打包工具 patch-generator-desk-v2.0.0

    增量打包工具patch-generator-desk-v2.0.0是一款针对IT项目,特别是Web应用程序的高效自动化打包解决方案。这款工具旨在简化版本更新过程,通过只打包自上次发布以来更改过的文件,显著减少部署包的大小,从而提高...

    java增量升级工具

    Java增量升级工具是一种...总之,Java增量升级工具是Java开发中的一个强大助手,它通过智能分析和打包技术,简化了更新流程,提升了更新效率。了解并熟练掌握这种工具,对于提升软件项目的质量和用户体验具有重要意义。

    java 写的根据svn信息生成的增量打包

    java 写的根据svn信息生成的增量打包工具类,有部分路径和判断条件需要修改,修改正确后可直接执行main方法运行。

    简单易用的文件打包增量工具

    增量打包工具会比较当前目录与上一次打包时的差异,只包含新创建、修改过的文件,而忽略未改变的文件。这种功能在持续集成或版本控制的场景中尤为重要,因为它允许用户快速获取到项目的最新变化,而不必下载整个项目...

    java增量更新打包JS脚本工具

    适用于Windows 平台需要:microsoft windows based script host 的支持 /* * 根据日期文件比较更新,提取更新文件 **/ var fso = new ActiveXObject("Scripting.FileSystemObject"); //工程路径 ...

    java增量升级程序.zip

    本"java增量升级程序.zip"文件主要是基于Subversion(SVN)版本控制系统来实现的增量打包。SVN是一个开源的版本控制系统,用于跟踪项目文件的历史变更,便于团队协作和代码管理。在这个过程中,我们首先需要确保本地...

    java工程增量包 打包工具 非常强大,非常好用

    路径扫描,日期扫描,文件过滤,备注填报,多线程处理速度快, 避免了繁琐的手动打包过程...

    java开发的可视化打增量包、发http请求、生成ibatis辅助工具

    1:根据svn提交记录选择需要打增量包的文件进行增量,特别提醒:打包前请使用开发工具对项目进行编译,因为打包是拷贝开发工具编译后的class文件。 2:模拟http请求,主要用于接口调。详情使用说明参见本人csdn博客...

    Java打增量补丁包工具

    https://blog.csdn.net/zou_hailin226/article/details/82836328 我已经将描述写成教程,需要的下载

    自动打包生成目录结构工具

    在Java领域,Maven是常用的自动打包工具,它可以处理项目的依赖关系,构建工件(如JAR、WAR),并且支持自定义生命周期和插件。 "java_copyFile"这个文件名可能是指工具中用于复制文件的部分,通常在自动打包过程中...

    Java测试覆盖率工具cobertura1.9

    Ant是一个广泛使用的Java项目构建工具,通过XML配置文件定义任务和依赖关系,实现自动化编译、打包、测试等一系列工作。将Cobertura与Ant结合,开发者可以在执行Ant构建时轻松地添加测试覆盖率检查,无需额外的复杂...

    javaweb工程自动增量发布小工具

    这个工具能够自动识别和打包增量内容,进一步可以集成到CI/CD(持续集成/持续交付)系统中,使得每次代码提交后都能自动触发发布流程。 5. **JavaWeb工程**:JavaWeb工程通常包含服务器端Java代码、HTML、CSS、...

    java项目增量更新之Eclipse外部工具(修改版)

    java项目增量更新之Eclipse外部工具 增量更新根据Eclipse里当前选中文件或目录自动获取class文件或resource文件打包到相应的路径目录里 修复BUG: 1、项目存在多个src路径的时候读取不到class文件 2、java文件有内部...

    MySQL数据库实时增量同步工具源代码.zip

    MySQL数据库实时增量同步工具是一种高效的数据管理解决方案,它允许用户在多个数据库实例之间实时地、持续地传输和更新数据。这种工具通常用于分布式系统、数据备份、数据仓库以及需要跨服务器复制数据的场景。源...

Global site tag (gtag.js) - Google Analytics