这个工具类的作用详见代码注释。
如果你每天都要进行增量部署,那么使用这个工具类,可以大大简化部署程序,省去一大堆麻烦。
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");
}
}