Cyh的博客

          Email:kissyan4916@163.com
          posts - 26, comments - 19, trackbacks - 0, articles - 220

          列出指定目錄下的文件

          Posted on 2009-05-24 20:32 啥都寫點(diǎn) 閱讀(210) 評(píng)論(0)  編輯  收藏 所屬分類: J2SE
          關(guān)鍵技術(shù):
          • File類的list方法返回該目錄下所有的文件(包括目錄)的文件名,文件名不包含路徑信息。
          • File類的listFiles方法返回該目錄下所有文件(包括目錄)的File對(duì)象。
          • FilenameFilter是文件名過濾器接口類,所有自定義的文件名過濾器必須實(shí)現(xiàn)該接口的accept方法。

          package book.io;
          import java.io.File;
          import java.io.FilenameFilter;

          public class ListFileUtil {
              
              
          /**
               * 這是一個(gè)內(nèi)部類,實(shí)現(xiàn)了FilenameFilter接口,用于過濾文件
               
          */
              
          static class MyFilenameFilter implements FilenameFilter{
                  
          //文件名后綴
                  private String suffix = "";
                  
                  
          public MyFilenameFilter(String surfix){
                      
          this.suffix = surfix;
                  }
                  
          public boolean accept(File dir, String name) {
                      
          //如果文件名以surfix指定的后綴相同,便返回true,否則返回false
                      if (new File(dir, name).isFile()){
                          
          return name.endsWith(suffix);
                      }
          else{
                          
          //如果是文件夾,則直接返回true
                          return true;
                      }
                  }
              }
              
              
          /**
               * 列出目錄下所有文件包括子目錄的文件路徑
               * 
          @param dirName    文件夾的文件路徑
               
          */
              
          public static void listAllFiles(String dirName){
                  
                  
          //如果dir不以文件分隔符結(jié)尾,自動(dòng)添加文件分隔符。
                  if (!dirName.endsWith(File.separator)){
                      dirName 
          = dirName + File.separator;
                  }
                  File dirFile 
          = new File(dirName);
                  
          //如果dir對(duì)應(yīng)的文件不存在,或者不是一個(gè)文件夾,則退出
                  if (!dirFile.exists() || (!dirFile.isDirectory())){
                      System.out.println(
          "List失敗!找不到目錄:" + dirName);
                      
          return;
                  }
                  
          //列出源文件夾下所有文件(包括子目錄)
                  File[] files = dirFile.listFiles();
                  
          for (int i = 0; i < files.length; i++){
                      
          if (files[i].isFile()){
                          System.out.println(files[i].getAbsolutePath() 
          + " 是文件!");
                      }
          else if (files[i].isDirectory()){
                          System.out.println(files[i].getAbsolutePath() 
          + " 是目錄!");
                          ListFileUtil.listAllFiles(files[i].getAbsolutePath());
                      }
                  }
              }
              
          /**
               * 列出目錄中通過文件名過濾器過濾后的文件。
               * 
          @param filter    文件名過濾器對(duì)象
               * 
          @param dirName        目錄名
               
          */
              
          public static void listFilesByFilenameFilter(FilenameFilter filter, String dirName){
                  
                  
          //如果dir不以文件分隔符結(jié)尾,自動(dòng)添加文件分隔符。
                  if (!dirName.endsWith(File.separator)){
                      dirName 
          = dirName + File.separator;
                  }
                  File dirFile 
          = new File(dirName);
                  
          //如果dir對(duì)應(yīng)的文件不存在,或者不是一個(gè)文件夾,則退出
                  if (!dirFile.exists() || (!dirFile.isDirectory())){
                      System.out.println(
          "List失敗!找不到目錄:" + dirName);
                      
          return;
                  }
                  
          //列出源文件夾下所有文件(包括子目錄)
                  File[] files = dirFile.listFiles(filter);
                  
          for (int i = 0; i < files.length; i++){
                      
          if (files[i].isFile()){
                          System.out.println(files[i].getAbsolutePath() 
          + " 是文件!");
                      }
          else if (files[i].isDirectory()){
                          System.out.println(files[i].getAbsolutePath() 
          + " 是目錄!");
                          ListFileUtil.listFilesByFilenameFilter(filter, files[i].getAbsolutePath());
                      }
                  }
              }

              
          public static void main(String[] args) {
                  String dir 
          = "C:/temp";
          //        System.out.println((dir + "目錄下的內(nèi)容: "));
          //        ListFileUtil.listAllFiles(dir);
          //        
          //        System.out.println();
          //        System.out.println("經(jīng)過過濾器過濾后的內(nèi)容:");
          //        //新建一個(gè)文件名過濾器。參數(shù)為".txt"
          //        FilenameFilter myFilenameFilter = new ListFileUtil.MyFilenameFilter(".txt");
          //        ListFileUtil.listFilesByFilenameFilter(myFilenameFilter, dir);
                  
                  String[] t 
          = new File(dir).list();
                  
          for (int i=0; i<t.length; i++){
                      System.out.println(t[i]);
                  }
              }
          }



                                                                                                                 --    學(xué)海無涯
                  

          主站蜘蛛池模板: 东台市| 酉阳| 新田县| 武隆县| 顺义区| 武强县| 闻喜县| 凭祥市| 衢州市| 大连市| 宁城县| 钟祥市| 满城县| 杭州市| 玛纳斯县| 临海市| 洪湖市| 长葛市| 卢龙县| 日照市| 新田县| 临澧县| 南宁市| 华坪县| 沈阳市| 收藏| 屯留县| 明光市| 大同县| 蒙山县| 黄山市| 龙游县| 民丰县| 乐东| 安化县| 长治县| 南安市| 睢宁县| 黎城县| 寿光市| 新河县|