posts - 241,  comments - 116,  trackbacks - 0
          現在很多公司采用SVN開發,其版本管理的確很不錯.
          但是有一點很讓人郁悶,就是源代碼的.svn文件會很多,而且當Java源碼代或者配置文件改變多次時,會生成很多版本,svn的大小可能是源代碼的N倍.
          如果想把某個目錄的svn文件去掉,可以自己寫個程序去刪除.svn目錄下的所有文件.方便又時用,我這里采用的是commons-io.jar 里的 DirectoryWalker,看到名稱就能理解“目錄散步”。
          廢話不說了,代碼如下:
          package com.ycl.filter.FileCleaner;

          import java.io.File;
          import java.io.IOException;
          import java.util.ArrayList;
          import java.util.Collection;
          import java.util.List;

          import org.apache.commons.io.DirectoryWalker;

          public class FileCleaner extends DirectoryWalker {

              public FileCleaner() {
                  super();
              }

              public List<File> clean(File startDirectory) throws IOException {
                  List<File> results = new ArrayList<File>();
                  walk(startDirectory, results);
                  return results;
              }

              @Override
              protected void handleStart(File startDirectory, Collection results)
                      throws IOException {
                  System.out.println("-------開始清除-------");
              }

              @Override
              protected void handleEnd(Collection results) throws IOException {
                  System.out.println("-------結束清除-------");
              }

              @Override
              protected void handleCancelled(File startDirectory, Collection results,
                      CancelException cancel) throws IOException {
                  System.out.println("-------清除異常-------");
                  super.handleCancelled(startDirectory, results, cancel);
              }

              @Override
              protected boolean handleIsCancelled(File file, int depth, Collection results)
                      throws IOException {
                  //這里可以設置斷點,比如當你找到某個類的時候,停止遍歷,默認繼續
                  return false;
              }

              @Override
              protected void handleDirectoryStart(File directory, int depth,
                      Collection results) throws IOException {
              //    System.out.println("****開始處理:"+directory.getName()+"deep:"+depth+"results:"+results.toString());
              }

              @Override
              protected void handleDirectoryEnd(File directory, int depth,
                      Collection results) throws IOException {
              //    System.out.println("****結束處理:"+directory.getName()+"deep:"+depth+"results:"+results.toString());
              }

              @Override
              protected void handleRestricted(File directory, int depth,
                      Collection results) throws IOException {
                  System.out.println("****受限制目錄:"+directory.getName()+"deep:"+depth+"results:"+results.toString());
              }

              /**
               * 是否處理某個目錄.返回false 不處理
               *
               * @see 這里直接刪除.svn.然后不處理.
               */
              @Override
              protected boolean handleDirectory(File directory, int depth,
                      Collection results) {
                  // delete svn directories and then skip
                  if (".svn".equals(directory.getName())) {
                      deleteDirectory(directory,results);
                      return false;
                  } else {
                      results.add(directory);//刪除.svn,還有哪些文件夾
                      return true;
                  }

              }

              /**
               * 刪除文件,并把文件加到刪除列表中
               */
              @Override
              protected void handleFile(File file, int depth, Collection results) {
                  // delete file and add to list of deleted
                  //file.delete();
                  //results.add(file);
                  //刪除.svn文件后,還有哪些文件
              }

              /**
               * 刪除目錄及目錄下的文件夾和文件
               * @param directory
               * @param results
               */
              private void deleteDirectory(File directory,Collection results){
                  if(directory.isDirectory()){
                      File[] list = directory.listFiles();
                      for(File file:list){
                          deleteDirectory(file,results);
                      }
                  }
                  Log(directory.delete(),directory);
                  results.add(directory);//刪除文件
              }

              /**Tp-Link教程
               * 刪除文件或者目錄失敗日志
               * @param flag
               */
              private void Log(boolean flag,File directory){
                  if(!flag){
                      System.err.println("刪除文件失敗:"+directory.getAbsolutePath());
                  }else{
                      System.out.println("delete:"+directory.getAbsolutePath());
                  }
              }iphone5
          }
          測試代碼如下:
          package com.ycl.filter.FileCleaner;

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

          public class TestFileCleaner {

              /**
               * @param args
               * @throws IOException
               */
              public static void main(String[] args) throws IOException {
                  // TODO Auto-generated method stub
                  FileCleaner cleaner = new FileCleaner();
                  File startDirectory = new File("D:\\workspace\\branches\\pamirsshop_branches_8-30");
                  List<File> list = cleaner.clean(startDirectory);
                  for(File file:list){
                  //    System.out.println("file:"+file.getAbsolutePath());
                  }
                  System.out.println("共處理"+list.size()+"個文件");

              }
          }
          posted on 2011-06-21 10:24 墻頭草 閱讀(228) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          人人游戲網 軟件開發網 貨運專家
          主站蜘蛛池模板: 衡东县| 安庆市| 焦作市| 台前县| 清河县| 绍兴市| 屯昌县| 新兴县| 武威市| 灵台县| 淮阳县| 拉孜县| 阳春市| 临沂市| 诏安县| 琼中| 凤庆县| 周口市| 兴安盟| 班玛县| 利川市| 建阳市| 五指山市| 同江市| 萨迦县| 海淀区| 高安市| 盐源县| 万安县| 蒙自县| 安多县| 清苑县| 鸡西市| 蒙阴县| 洛阳市| 武清区| 安泽县| 新晃| 扎囊县| 冷水江市| 康马县|