posts - 241,  comments - 116,  trackbacks - 0
          有時需要遞歸遍歷一個文件樹,比如查找一個文件夾內(nèi)符合條件的文件,查找某一天創(chuàng)建的文件……。jdk7 nio包提供一個新的接口 FileVisitor。它提供了遍歷文件樹的各種操作。
          preVisitDirectory - 一個路徑被訪問時調(diào)用英文中喝雞湯用drink還是eat
          PostVisitDirectory - 一個路徑的所有節(jié)點(diǎn)被訪問后調(diào)用。如果有錯誤發(fā)生,exception會傳遞給這個方法
          visitFile - 文件被訪問時被調(diào)用。該文件的文件屬性被傳遞給這個方法
          visitFileFailed - 當(dāng)文件不能被訪問時,此方法被調(diào)用。Exception被傳遞給這個方法。
          如果你比較懶,不想實(shí)現(xiàn)所有方法。你可以選擇繼承 SimpleFileVisitor。它幫你實(shí)現(xiàn)了上述方法,你只需Override 你感興趣的方法。淘寶女裝夏裝新款
          下面給個例子,簡單地遍歷一個文件夾,打印出所有信息
          import java.io.IOException;
          import java.nio.file.FileVisitResult;
          import java.nio.file.Files;
          import java.nio.file.Path;
          import java.nio.file.Paths;
          import java.nio.file.SimpleFileVisitor;
          import java.nio.file.attribute.BasicFileAttributes;

          /**
           * @author kencs@foxmail.com
           */
          public class FileVisitorTest extends SimpleFileVisitor<Path> {
              
              private void find(Path path){
                  System.out.printf("訪問-%s:%s%n",(Files.isDirectory(path)?"目錄":"文件"),path.getFileName());
              }
              @Override
              public FileVisitResult visitFile(Path file,BasicFileAttributes attrs){
                  find(file);
                  return FileVisitResult.CONTINUE;
              }
              
              @Override
              public FileVisitResult preVisitDirectory(Path dir,BasicFileAttributes attrs){
                  find(dir);
                  return FileVisitResult.CONTINUE;
              }
              
              @Override
              public FileVisitResult visitFileFailed(Path file,IOException e){
                  System.out.println(e);
                  return FileVisitResult.CONTINUE;
              }
              
              public static void main(String[] args) throws IOException{
                  if(args.length!=1){
                      System.out.println("請輸入一個文件路徑作為參數(shù)");
                      System.exit(-1);
                  }
                  Files.walkFileTree(Paths.get( args[0]), new FileVisitorTest());
              }
          }
          注意 FileVisitResult有四種 CONTINUE –繼續(xù) TERMINATE –終止,這次遍歷結(jié)束了 SKIP_SUBTREE –子樹(當(dāng)前路徑的子目錄)不再遍歷了 SKIP_SIBLINGS –兄弟節(jié)點(diǎn)(同級別目錄)不再訪問了。
          posted on 2011-05-20 15:03 墻頭草 閱讀(535) 評論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          人人游戲網(wǎng) 軟件開發(fā)網(wǎng) 貨運(yùn)專家
          主站蜘蛛池模板: 延川县| 武陟县| 黔东| 阜新市| 淮安市| 都昌县| 乌恰县| 北票市| 木里| 大港区| 聊城市| 洛扎县| 阿勒泰市| 海兴县| 逊克县| 当涂县| 高要市| 丰都县| 柯坪县| 同仁县| 台中县| 错那县| 旺苍县| 永定县| 金山区| 梁河县| 苍梧县| 普兰店市| 崇明县| 平凉市| 金门县| 张北县| 会同县| 孝义市| 保康县| 高雄市| 梨树县| 项城市| 江门市| 华坪县| 仲巴县|