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

本工程主要解决两个问题:
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.ArrayList;
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

同步软件是一款自同步是最好用的局域网文件实时同步工具软件使用方便、同步快速,并且支持五大平台,包括windows、mac、linux、android和IOS(未发布)。 轻松实现多设备之间的无线数据同步,无需注册下载即用,简单与智慧并存,安全与极速并重,您居家办公必备的之神器。 自同步软件特点 1.全平台覆盖。 包揽所有平台,让跨平台使用数据不在那么遥远。 你不必担心在Windows、Linux、Mac多平台间的数据传递;更不必担心在电脑、手机、平板等多设备间传输文件的跨平台问题。 自同步全平台覆盖(Windows、Linux、Mac、Iphone、Ipad、Android),完美解决跨平台问题,让跨平台使用数据不再那么遥远。 2.独创P2P同步。 无需中心服务器,任意两个设备自动同步数据。 您无需为在电脑和电脑间传递数据而到处寻找U盘;也无需为在手机与电脑间拷贝图片而使用数据线。 自同步以独有的P2P同步技术让您在任意两个设备上自动同步文件。 3.数据只属于你。无需云,无需外网,安全高速。 你无需在使用云服务同步文件时为担心数据丢失、泄露而苦恼;更无需在传输大量文件时因需要等待很长时间而发愁。 自同步无需云、无需外网,安全高速,数据只属于你。 自同步软件功能 1)在无网的情况下,手机、平板、电脑间无线同步数据。 2)零流量极速同步,歌曲图片秒同步,大文件同步速度无限制。 3)点对点通信,同时数据传输加密,最安全的同步工具。 4)支持Android手机、Android平板、Windows、Linux、Mac OS X。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值