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);
}
}