根据SVN距给定时间之后提交的文件进行增量部署Java工具类

这个工具类的作用详见代码注释。

如果你每天都要进行增量部署,那么使用这个工具类,可以大大简化部署程序,省去一大堆麻烦。


package com.arvon.filedetector;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
/**
 * 找出给定时间之后的所有修改过的文件,
 * 将该文件的路径截取一定级别拷贝到另一个文件夹中
 *@author Huangwen
 *2017-4-6
 */
public class FileDetector {
	public static void detectAllFile(File f,String time) throws Exception{
		long ts = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time).getTime();
        String[] split = f.getPath().split("WebRoot");
        String p = split.length>1 ? split[1].substring(1) : null;
        if(p!=null)
        	if(f.lastModified() >= ts && (f.isFile())){
            	System.out.println(p);
            	moveTo(f,"D:\\filesupdated\\"+p);
            }
        if(f.isDirectory()){
             File[] f1 = f.listFiles();  
             for(int i = 0;i < f1.length;i++)
                  detectAllFile(f1[i],time); //递归调用
        }
	}
	public static void moveTo(File oldFile,String dir) throws Exception{
		new File(dir.substring(0,dir.lastIndexOf("\\")+1)).mkdirs(); //创建文件夹
		InputStream inStream = new FileInputStream(oldFile); 
		FileOutputStream fs = new FileOutputStream(dir); 
		byte[] buffer = new byte[1444]; 
		int byteread = 0; 
		while ( (byteread = inStream.read(buffer)) != -1) 
			fs.write(buffer, 0, byteread); 
		inStream.close(); 
	}
}



//-----------------------------------

package com.arvon.filedetector;

import java.io.File;
/**
 * 测试类
 *@author Huangwen
 *2017-4-6
 */
public class FileTest {
	public static void main(String[] args) throws Exception {
		String uri= "D:\\svn_worl\\syjd\\WebRoot\\";
		File f = new File(uri);
		FileDetector.detectAllFile(f,"2017-04-06 12:10:00");
	}
}


猜你喜欢

转载自blog.csdn.net/wen942467928/article/details/69389271