`
superxielei
  • 浏览: 266520 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

快速复制java对应的class文件,方便制作svn的patch。

    博客分类:
  • java
阅读更多

最近手里好几个项目都在频繁的更新,我一直使用svn的patch制作补丁,但是因为class是不受svn管理的,每次更新的类都要手动的一个一个复制出来,少的时候没感觉怎么样,最近太多了,弄的我焦头烂额的,所以写了个小东西,自动根据已有的java文件,找对应的class复制过来。这样果然方便多了。

 

 

package com.radium.createpatch;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

/**
 * 创建补丁
 * 
 * @author XieLei
 * @update 2011-11-9 下午2:15:45
 */
public class CreatePatch {
	static String path1 = "C:\\Users\\Radium-Work\\Desktop\\2011-11-9 84-140\\WebRoot\\WEB-INF\\classes";
	static String path2 = "D:\\WorkSpace\\neuedu-metallurgy\\trunk\\neuedu-metallurgy\\WebRoot\\WEB-INF\\classes";

	public static void main(String[] args) {
		File file1 = new File(path1);
		File file2 = new File(path2);

		if (file1.exists() && file2.exists()) {
			createPath(file1);
		}
		System.out.println("共复制:"+count);
	}

	static File tempFile1;
	static File tempFile2;
	static String tempStr;
	
	static int count = 0;

	public static void createPath(File file) {
		if (file.exists()) {
			File[] files = file.listFiles();
			for (File f : files) {
				if (f.isDirectory()) {
					createPath(f);
				} else {
					if (f.getName().endsWith(".java")) {
						count++;
						tempStr = path2 + f.getPath().substring(path1.length(), f.getPath().length());
						tempStr = tempStr .substring(0, tempStr.lastIndexOf(".")) + ".class";
						tempFile1 = new File(tempStr);
						tempFile2 = new File(f.getPath().substring(0, f.getPath().lastIndexOf("\\")+1)+f.getName().subSequence(0, f.getName().lastIndexOf(".")) +".class");
						if(tempFile1.exists()){
							try {
								copyFile(tempFile1,tempFile2);
								f.delete();
							} catch (Exception e) {
								e.printStackTrace();
							}
						}
						System.out.println(f.getName());
					}
				}
			}
		}
	}

	/**
	 * 将F1复制到F2
	 * @param f1
	 * @param f2
	 * @return
	 * @throws Exception
	 * @author XieLei
	 * @update 2011-11-9 下午2:42:09
	 */
	public static void copyFile(File f1, File f2) throws Exception {
		int length = 2097152;
		FileInputStream in = new FileInputStream(f1);
		FileOutputStream out = new FileOutputStream(f2);
		byte[] buffer = new byte[length];
		
		int ins = 0;
		while (true && ins != -1) {
			ins = in.read(buffer);
			if(ins != -1)
				out.write(buffer, 0, ins);
		}
		
		in.close();
		out.flush();
		out.close();
	}
}

分享到:
评论
4 楼 qq705570553 2017-01-18  
嗯,是可以用,注意要保持两个文件夹的一致性
3 楼 qq705570553 2016-09-13  
path1里面的java文件根本就没替换成class
2 楼 qq705570553 2016-09-13  
用不了,是不是你写的有问题?
1 楼 yutou0921 2013-06-17  
你好,最近也遇到一样的问题,也是做了这么一个拷贝的小程序。
但是不知道您有没发现,拷贝出来的class文件是错误的,用反编译软件打开报错,跑工程的时候也会报错。
不知道您是怎么解决的?

相关推荐

    快速导出class文件插件 集合svn

    标题中的“快速导出class文件插件 集合svn”指的是一个专门针对开发者设计的工具,它结合了快速导出Java编译后的class文件功能和版本控制系统Subversion(SVN)的集成。这个插件旨在提高开发者的效率,允许他们便捷...

    svn patch 小工具 (自动提取改动文件)

    标题 "svn patch 小工具 (自动提取改动文件)" 暗示了这是一个关于版本控制系统Subversion(简称svn)和patch文件处理的工具。Subversion是广泛使用的版本控制软件,用于跟踪和管理代码库中的更改。patch文件则通常...

    java代码利用svnkit操作svn导出某版本或多个版本修改的文件

    利用svnkit操作svn,实现对版本修改文件的导出,可以导出多个版本,.java文件将会在本地取出.class文件,导出后压缩成压缩包,主要用于服务器上的资源更新,不需要开发人员去找到对应的.class文件或其他文件压缩然后...

    java操作svn把资源下载到服务器

    Java操作SVN将资源下载到服务器是一个常见的任务,在软件开发过程中,版本控制系统如SVN(Subversion)用于管理代码和其他资源的历史版本。本教程将详细解释如何使用Java与SVN进行交互,以便从SVN仓库中拉取资源并将...

    用java代码删除项目中的.svn文件

    更新svn地址需要删除项目中svn版本文件 。代码删除项目中的.svn文件

    快速清除SVN文件

    可以快速的清除所有的.SVN文件 可以快速的清除所有的.SVN文件

    java代码下载svn上的项目

    用java代码下载svn上的项目,包含svnkit的jar包,可以根据版本号下载项目,同路径下会删除原来下载过的项目。

    svn安装与patch文件应用

    ### SVN安装与Patch文件应用详解 #### Subversion (SVN) 概述 Subversion (SVN) 是一种广泛使用的版本控制系统,它帮助开发者管理源代码,并跟踪项目的变更历史。SVN 支持多用户的协作开发环境,允许团队成员之间...

    纯java操作svn--svnkit API

    ### 纯Java操作SVN——SVNKit API详解 #### 概述 在软件开发过程中,版本控制系统如Subversion(SVN)是必不可少的工具之一。为了更好地集成SVN功能到Java应用中,SVNKit提供了一套全面且强大的API。本文将详细...

    用来删除SVN文件

    用来删除SVN文件用来删除SVN文件用来删除SVN文件用来删除SVN文件

    java http svn上传工具

    用java实现的基于http协议的svn程序

    java svn 插件和svn客户端

    Java SVN 插件和SVN客户端是版本控制系统Subversion(SVN)在Java开发环境中的应用工具,主要用于协同开发和代码版本管理。Subversion是一种开放源码的版本控制系统,能够跟踪文件和目录的修改,方便团队成员之间的...

    Java源代码class文件反编译工具:jd-gui.zip

    JD-GUI是一款强大的Java反编译器,它提供了直观的图形用户界面,使得开发者能够快速浏览和理解字节码级别的.class文件,将其转换回可读的Java源代码。这个工具对于调试、逆向工程或学习第三方库的内部工作原理非常...

    java操作svndemo

    Subversion是一个开源的版本控制系统,用于管理文件和目录的不同版本,而Java则是一种广泛使用的编程语言,提供了丰富的库来实现对SVN的操作。 在Java中,我们通常会使用第三方库如SVNKit来实现对SVN仓库的访问和...

    SVNKit获取SVN信息

    总之,SVNKit是Java开发人员处理SVN版本控制问题的强大工具,通过其丰富的API,可以方便地获取和操作SVN仓库中的信息,实现与SVN服务器的高效交互。了解和熟练掌握SVNKit的使用,将有助于提升Java项目中的版本控制...

    清除文件中的SVN文件

    当你双击运行这个`.reg`文件并确认导入后,系统会更新注册表,使得用户在需要清理SVN文件时,只需右键点击文件夹,选择“Delete SVN Folders”,即可快速删除所有包含的`.svn`子目录,而不会影响到其他文件。...

    删除svn文件的java代码

    ### 删除SVN文件的Java代码知识点解析 #### 一、代码功能概述 本文将深入解析一个用于删除Subversion(简称SVN)版本控制系统中的`.svn`文件夹的Java程序。该程序通过递归的方式遍历指定目录下的所有子目录与文件,...

    java项目部署文件快速提取 V2.1 增加根据svn时间自动判断修改文件

    每次整理需要部署文件的时候,都会发现要做的工作很多,而且效率很低,因此想到开发个工具,快速提取出这些文件。这个工具完全免费的,只适用于java,增量部署项目。与1.x版本比起来增加了通过svn时间自动判断修改的...

    java 源代码 软件 自动删除 svn 目录下的 所有svn文件

    java源代码,用于删除svn目录下的所有svn文件名包含svn的文件。可以让工程恢复到没有加入到svn时的状态。 支持命令行删除,也可在修改程序自己删除

    java实现的svn统计修改代码行数完整源码

    Java程序可以利用`diff`命令的输出或者直接使用SVN库提供的API来获取文件的差异。这些差异通常表示为一系列的插入、删除和替换操作。通过解析这些差异,我们可以统计出每行代码的增加和减少,从而得到修改的总行数。...

Global site tag (gtag.js) - Google Analytics