从svn日志中读取指定开发人员的修改记录并按工程归档

svn日志获取

svn checkout工程, svn log -r {开始日期}:{结束日期} -v > 日志保存路径

svn log -r {2017-2-6}:{2017-2-15} -v > d:/svn.log

主方法

package ajava;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

public class TestReadFile {
    static String[] apps="工程A,工程B,工程C".split(",");
    
    public static StringBuffer readFileByLines(String fileName, String uname) {
        StringBuffer buf = new StringBuffer();
        File file = new File(fileName);
        BufferedReader reader = null;
        try {
            // System.out.println("以行为单位读取文件内容,一次读一整行:");
            InputStreamReader read = new InputStreamReader(new FileInputStream(
                    file), "gbk");
            reader = new BufferedReader(read);
            String tempString = null;
            int line = 1;
            // 一次读入一行,直到读入null为文件结束
            boolean f = false;
            boolean me = false;
            String con = "";
            while ((tempString = reader.readLine()) != null) {
                if ("------------------------------------------------------------------------"
                .equals(tempString)) {
                    f = true;
                    me = false;
                    con = "";
                } else {
                    if (tempString.indexOf(uname) > -1) {
                        me = true;
                    }

                    if (me) {
                        con = tempString + "";
                    }
                }
                // System.out.println(con);
                buf.append(con);
                // 显示行号
                System.out.println("line " + line + ": finished");
                line++;
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }

        return buf;
    }
    
    
    public static StringBuffer readFileByKey(String fileName, String key) {
        StringBuffer buf = new StringBuffer();
        File file = new File(fileName);
        BufferedReader reader = null;
        try { 
            InputStreamReader read = new InputStreamReader(new FileInputStream(
                    file), "gbk");
            reader = new BufferedReader(read);
            String tempString = null;
            int line = 1;
         
            while ((tempString = reader.readLine()) != null) { 
                    if (tempString.indexOf(key) > -1) {
                        buf.append(tempString + "
");
                    } 
                    System.out.println("line " + line + ": finished");
                    line++; 
                }
                  
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }

        return buf;
    }

    public static void writeFile(String fileName, String str) {
        long start = System.currentTimeMillis();
        try {
            FileWriter fileWriter = new FileWriter(fileName);

            fileWriter.write(str);
            fileWriter.flush();
            fileWriter.close();
            long end = System.currentTimeMillis();
            System.out.println("写文件耗时:" + (end - start) + " ms");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    
    
    
    public static void step1(){
        long start = System.currentTimeMillis();
        String str = readFileByLines(
                "C:/Users/Administrator/Desktop/test/logs.txt", "开发人员svn账户")
                .toString();
         
        System.out.println(str);
        writeFile("C:/Users/Administrator/Desktop/test/mylog.txt",str);
        long end = System.currentTimeMillis();
        System.out.println("耗时:" + (end - start) + " ms");
    }
    
    public static void step2(){
        long start = System.currentTimeMillis();
        for (int i = 0; i < apps.length; i++) { string key="apps[i];" string str =" readFileByKey(" "c:="" users="" administrator="" desktop="" test="" mylog.txt",key)="" .tostring(); ="" key="key.replace("/", "");" writefile("c:="" "+key+".txt",str);="" }="" long end =" System.currentTimeMillis();" system.out.println("耗时:" + (end - start) + " ms");="" public static void main(string[] args) {="" step2();="" <="" pre="">

0%