Java实现自动从ClearCase中check out 文件或文件夹

15 篇文章 0 订阅
Java实现自动从ClearCase中check out 文件或文件夹。1、check out单个文件;2、check out文件夹


import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.nio.channels.FileChannel;



/**

 * Author: zhusheng3@126.com

   Date:2007-11-29 上午01:12:27  Shenzhen

 */



public class ClearCaseTool

{



    public static void checkout(File batchFile)

    {

        if(batchFile == null)

        {

            batchFile = new File("clearCaseCheckOut.bat");

        }

        String fileName = batchFile.getAbsolutePath();

        try

        {

            Runtime.getRuntime().exec("cmd.exe /c  start "+fileName+"");

        }

        catch (IOException e)

        {



            e.printStackTrace();

        }

    }

    //批量checkout文件

	  public static void checkout_multiFiles(File fileNamelistFile,String comments)

	    {

	         

		     try {

		    	 File batchfile=new File("clearcaseCheckOutBatch.bat");

			      if(batchfile.exists())

			      {

			    	  FileTool.deleteFile(batchfile.getAbsolutePath());

			      }

			      

			      ClearCaseTool.checkout_genBatch(fileNamelistFile, batchfile, comments);

			      ClearCaseTool.checkout(batchfile);

			      //sleep 5 seconds,waiting system finish excuting batch

			      Thread.sleep(5000);

				

			} catch (Exception e) 

			{

				e.printStackTrace();

			}

	    }

  /*

   * checkout 单个文件

   */	  

    public static void checkout_singleFile(File clearcaseFile,String comments)

    {



    	try 

    	{

            String cmd_checkout=checkout_genSingleString(clearcaseFile, comments);

            cmd_checkout=cmd_checkout+"/n exit /n";



    		 Runtime.getRuntime().exec("cmd.exe /c   "+cmd_checkout+""); 

    		 Thread.sleep(1000);

		} 

    	catch (Exception e)

		{

           e.printStackTrace();

		}

    	

    }

    // check out clearcase上的一个文件夹下所有子目录的文件

	  public static void checkout_dir(File clearcaseDir,String comments)

	  {



		  if (clearcaseDir.isFile())

		  {

			  checkout_singleFile(clearcaseDir,comments); 

		  }

		  else if(clearcaseDir.isDirectory())

		  {

			  

			  File subFiles [] = clearcaseDir.listFiles();

			  for (int i = 0; i < subFiles.length; i++) 

			  {

				  if(subFiles[i].isFile())

				  {

					  checkout_singleFile(subFiles[i],comments); 

				  }

				  else

				  {

					  checkout_dir(subFiles[i], comments);

				  }

				

			}

		  }

		  

	  }

    

    

    public static String checkout_genSingleString(File file, String comments)

    {

        StringBuffer sb = new StringBuffer();

        sb.append(" Cleartool checkout -c /"" + comments + "/"" + " -reserve "

                + file.getAbsolutePath());

        sb.append("/n");

       //System.out.println(sb.toString());

        return sb.toString();

    }



    public static void checkout_genBatch(File clearCaseFileNames, File outputBatchFile,

            String comments)

    {

        BufferedReader br = null;

        BufferedWriter bw = null;



        try

        {

            br = new BufferedReader(new FileReader(clearCaseFileNames));

            bw = new BufferedWriter(new FileWriter(outputBatchFile));

            String line = br.readLine();



            while (line != null)

            {

               

                File clearCaseFile = new File(line);



                bw.write(checkout_genSingleString(clearCaseFile, comments));



                line = br.readLine();

            }

            bw.write("exit");

            bw.newLine();



        }

        catch (Exception e)

        {



            e.printStackTrace();

        }

        finally

        {

            if (br != null)

            {

                try

                {

                    br.close();

                }

                catch (IOException e)

                {



                    e.printStackTrace();

                }

            }

            if (bw != null)

            {

                try

                {

                    bw.close();

                }

                catch (IOException e)

                {



                    e.printStackTrace();

                }

            }

        }

    }



    public static void main(String[] args)

    {

        ClearCaseTool aClearCaseFileUtil = new ClearCaseTool();

        File ccFile = new File("M://mswitch//dm//resources//properties//dm_zh_TW.properties");

        

        checkout_singleFile(ccFile,"comments by steven");



        File source = new File("d://zz_tw");

        File target = new File("d://zz_tw_modified");

      

        File step9_allFilesTobecheckin_ClearCase=new File("step9_allFilesTobecheckin_ClearCase.txt");

        File step10_checkoutbatch=new File("step10_checkoutbatch.bat");

        String comments="change translation";

        ClearCaseTool.checkout_genBatch(step9_allFilesTobecheckin_ClearCase, step10_checkoutbatch, comments);



    }



}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值