您的位置:首页 > 其它

开发利器之一键文件同步工具

2017-02-11 21:27 281 查看
本工程主要解决两个问题:

1.复制svn提测的不规则信息转化为标准格式提供给测试人员部署

2.将工程的dev分支变更一键直接同步到release分支,避免人工误差和繁琐浪费时间

将为开发人员自动同步代码每天节省20分钟,心情愉悦提升30%,工程为maven工程,附件有全部源码供大家作为工具使用和学习 还等什么,工具已开源,下载链接: http://download.csdn.net/detail/lw4135/9752593

必要注释:

1.FileSyn为工程运行的主入口

2.need_synchronize_files.txt:待同步文件名列表,直接从svn提测信息复制过来的

3.config.properites为工程运行配置文件,NEED_SYN_FILE_PATH:为待同步文件名列表的路径,

SRC_PATH:源路径,DEST_PATH:目的路径。

4.工程运行完毕会在控制台打印运行结果,复制失败的注意检查路径

以下为运行日志示例:

一、Java文件:(1个)

/java/com/ivan/common/controllers/testController.java

二、Html文件:(1个)

/views/test/test.html

三、文件夹:(1个)

/views/test

===============以上为提测列表复制给测试人员部署===============

待同步文件总个数:3,文件同步日志:

/java/com/ivan/common/controllers/testController.java复制完成

/views/test/test.html复制完成

/views/test复制完成

运行完毕!

部分源码:

package ivan;

import ivan.util.ConfigPropUtil;
import ivan.util.ReadFilesUtil;

import java.io.File;
import java.util.HashMap;
import java.util.List;

import org.apache.commons.io.FileUtils;

/**
* 文件复制-工程主函数入口
*
*/
public class FileSyn {
/**
* 待同步文件列表的路径
*/
public final static String NEED_SYN_FILE_PATH =  ConfigPropUtil.getPropertyValue("NEED_SYN_FILE_PATH");
// java文件路径举例
// D:\workspace10\dev\src\main\java\com\ivan\common\controllers\TestController.java
// html文件路径举例
// D:\workspace10\dev\src\main\webapp\views\test\m\changeCity.html
/**
* 待复制的源文件路径头
*/
public static final String SRC_PATH = ConfigPropUtil.getPropertyValue("SRC_PATH");
/**
* 复制目的地文件路径头
*/
public static final String DEST_PATH =  ConfigPropUtil.getPropertyValue("DEST_PATH");

public static void main(String[] args) {
HashMap<Integer, List<String>> fileMap = ReadFilesUtil.getFileMap(NEED_SYN_FILE_PATH);
ReadFilesUtil.printFileMap(fileMap);
List<String> javaList = fileMap.get(0);// Java类型文件
List<String> htmlList = fileMap.get(1);// html类型文件
List<String> packList = fileMap.get(2);// 其他文件或文件夹
System.out.println("===============以上为提测列表复制给测试人员部署=============== \n 待同步文件总个数:"+(javaList.size()+htmlList.size()+packList.size())+",文件同步日志:");
String errorMsg="";
errorMsg+=copyFileList(javaList, 0);
errorMsg+=copyFileList(htmlList, 1);
errorMsg+=copyFileList(packList, 2);
if(!"".equals(errorMsg)){
System.err.println("以下文件复制失败,请检查路径是否正确:\n"+errorMsg);
}
System.out.println("运行完毕!");
}

/**
* 文件复制
* @param type 类型
* @param fileName文件名称
*/
public static String copyFile(int type, String fileName) {
String srcPath = SRC_PATH;
String destPath = DEST_PATH;
if (fileName.indexOf("/views/")!=-1) {
srcPath += "\\webapp";
destPath += "\\webapp";
}
String srcFile = srcPath + fileName;
String destFile = destPath + fileName;
try {
if(type==2){
FileUtils.copyDirectory(new File(srcFile), new File(destFile));
}else {
FileUtils.copyFile(new File(srcFile), new File(destFile));
}
System.out.println(fileName + "复制完成");
} catch (Exception e) {
e.printStackTrace();
return "fileName:"+fileName+" 源文件:" + srcFile + " 目的文件:" + destFile+"\n";
}
return "";
}

/**
* 复制文件集合
* @param list文件名称
* @param type 类型
*/
public static String copyFileList(List<String> list, int type) {
String errorMsg="";
for (String str : list) {
errorMsg+=copyFile(type, str);
}
return errorMsg;
}

}


package ivan.util;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Arr
4000
ayList;
import java.util.HashMap;
import java.util.List;
/**
*分类读取待同步文件工具类
*/
public class ReadFilesUtil {
public final static String filePath = ConfigPropUtil.getPropertyValue("NEED_SYN_FILE_PATH");
/**
* 根据文件路径得到各种类型文件集合
*
* @param filePath
* @return
*/
public static HashMap<Integer, List<String>> getFileMap(String filePath) {
HashMap<Integer, List<String>> fileMap = new HashMap<Integer, List<String>>();
try {
List<String> javaList = new ArrayList<String>();// Java类型文件
List<String> htmlList = new ArrayList<String>();// html类型文件
List<String> packList = new ArrayList<String>();// 其他文件或文件夹
FileReader fr = new FileReader(filePath);
BufferedReader br = new BufferedReader(fr);
String s;
while ((s = br.readLine()) != null) {
if (s.indexOf("src/main/") != -1) {
// 路径处理
s = s.substring(s.indexOf("src/main/")).replace("src/main", "").replace("/webapp", "");
if (s.endsWith(".html")) {
htmlList.add(s);
} else if (s.endsWith(".java")) {
javaList.add(s);
} else {
packList.add(s);
}
}
}
fileMap.put(0, javaList);
fileMap.put(1, htmlList);
fileMap.put(2, packList);
br.close();
return fileMap;
} catch (Exception e) {
e.printStackTrace();
return fileMap;
}
}

/**
* 根据文件路径得到各种类型文件集合
*
* @param filePath
* @return
*/
public static void printFileMap(HashMap<Integer, List<String>> fileMap) {
try {
List<String> javaList = fileMap.get(0);// Java类型文件
List<String> htmlList = fileMap.get(1);// html类型文件
List<String> packList = fileMap.get(2);// 其他文件或文件夹
// 输出
if (javaList.size() > 0) {
System.out.println("一、Java文件:(" + javaList.size() + "个)");
for (String str : javaList) {
System.out.println(str);
}
}
if (htmlList.size() > 0) {
System.out.println("二、Html文件:(" + htmlList.size() + "个)");
for (String str : htmlList) {
System.out.println(str);
}
}
if (packList.size() > 0) {
System.out.println("三、文件夹:(" + packList.size() + "个)");
for (String str : packList) {
System.out.println(str);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 测试读取文件列表
* @param args
*/
public static void main(String[] args) {
HashMap<Integer, List<String>> fileMap = getFileMap(filePath);
printFileMap(fileMap);
}
}


还等什么,工具已开源,下载链接:

http://download.csdn.net/detail/lw4135/9752593
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  文件同步利器