根据svn的ChangeLog打出更新包
ChangeLog.txt
r628 | zhoulz | 2013-08-18 22:27:18 CSTChanged paths:M /trunk/config/case_task.xmlM /trunk/src/com/paic/rsms_case/web/TaskController.javaM /trunk/webroot/task/taskList.jspM /trunk/webroot/task/taskServiceList.jsp修改问题查询列表SQL----------------------------------------
package com.paic;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;public class ChangeLogUtils {static String[] SRC = new String[] { "src", "config" };static String WEB = "WebContent";static String WEBAPPS = "D:/Tomcat7.0.8/webapps/";static String PROJECT = "knows";static String DEPLOY_DIR = "/WEB-INF/classes";static String CHANGE_LOG_PREFIX = "/trunk/";static String CHANGE_LOG_FILE_NAME = "changelog.txt";static String TARGET = "D:/Users/ex-zhoulingzhou002/Desktop/changelog/";static{WEBAPPS += PROJECT;SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");TARGET = TARGET+sdf.format(new Date())+"/"+PROJECT;File f = new File(TARGET);if(f.exists()){try {del(TARGET);} catch (IOException e) {e.printStackTrace();}}f.mkdirs();}public static void main(String[] args) throws Exception {String root = ChangeLogUtils.class.getResource("/").getPath();File file = new File(root + CHANGE_LOG_FILE_NAME);BufferedReader br = new BufferedReader(new FileReader(file));String line = null;List<String> files = new ArrayList<String>();while ((line = br.readLine()) != null) {if(line.contains(CHANGE_LOG_PREFIX)){String filePath = line.replaceAll(".*?" + CHANGE_LOG_PREFIX + "(.*?)", "$1").replaceAll("\\.java", ".class");String source = "",target = "";if(filePath.startsWith(WEB)){filePath = filePath.replaceFirst(WEB, "");source = WEBAPPS+filePath;target = TARGET + filePath;}else{for (String src : SRC) {if (filePath.startsWith(src)) {filePath = filePath.replaceFirst(src, "");source = WEBAPPS+DEPLOY_DIR+filePath;target = TARGET + DEPLOY_DIR + filePath;}}}copyFile(new File(source), new File(target));}}br.close();} // 复制文件 public static void copyFile(File sourceFile, File targetFile) throws Exception { BufferedInputStream inBuff = null; BufferedOutputStream outBuff = null; try { // 新建文件输入流并对它进行缓冲 inBuff = new BufferedInputStream(new FileInputStream(sourceFile)); if(!targetFile.exists()){ try{ targetFile.getParentFile().mkdirs(); targetFile.createNewFile(); }catch(Exception e){ System.out.println(targetFile.getAbsolutePath()); throw e; } } // 新建文件输出流并对它进行缓冲 outBuff = new BufferedOutputStream(new FileOutputStream(targetFile)); // 缓冲数组 byte[] b = new byte[256]; int len; while ((len = inBuff.read(b)) != -1) { outBuff.write(b, 0, len); } // 刷新此缓冲的输出流 outBuff.flush(); } finally { // 关闭流 if (inBuff != null) inBuff.close(); if (outBuff != null) outBuff.close(); } } /** * * @param filepath * @throws IOException */ public static void del(String filepath) throws IOException { File f = new File(filepath);// 定义文件路径 if (f.exists() && f.isDirectory()) {// 判断是文件还是目录 if (f.listFiles().length == 0) {// 若目录下没有文件则直接删除 f.delete(); } else {// 若有则把文件放进数组,并判断是否有下级目录 File delFile[] = f.listFiles(); int i = f.listFiles().length; for (int j = 0; j < i; j++) { if (delFile[j].isDirectory()) { del(delFile[j].getAbsolutePath());// 递归调用del方法并取得子目录路径 } delFile[j].delete();// 删除文件 } } } }}