當前位置:編程學習大全網 - 熱門推薦 - C# 如何獲取指定目錄包含的文件和子目錄

C# 如何獲取指定目錄包含的文件和子目錄

 如何獲取指定目錄包含的文件和子目錄 DirectoryInfo GetFiles() 獲取目錄中(不包含子目錄)的文件 返回類型為FileInfo[] 支持通配符查找 DirectoryInfo GetDirectories() 獲取目錄(不包含子目錄)的子目錄 返回類型為DirectoryInfo[] 支持通配符查找 DirectoryInfo GetFileSystemInfos() 獲取指定目錄下(不包含子目錄)的文件和子目錄 返回類型為FileSystemInfo[] 支持通配符查找 如何獲取指定文件的基本信息 FileInfo Exists 獲取指定文件是否存在 FileInfo Name FileInfo Extensioin 獲取文件的名稱和擴展名 FileInfo FullName 獲取文件的全限定名稱(完整路徑) FileInfo Directory 獲取文件所在目錄 返回類型為DirectoryInfo FileInfo DirectoryName 獲取文件所在目錄的路徑(完整路徑) FileInfo Length 獲取文件的大小(字節數) FileInfo IsReadOnly 獲取文件是否只讀 FileInfo Attributes 獲取或設置指定文件的屬性 返回類型為FileAttributes枚舉 可以是多個值的組合 FileInfo CreationTime FileInfo LastAccessTime FileInfo LastWriteTime 分別用於獲取文件的創建時間 訪問時間 修改時間 遍歷文件夾 文件夾是樹形結構 遍歷算法有 廣度優先級和深度優先級 區別 廣度首先查找同壹層目錄 深度首先遍歷壹條分支 有了這個區別 就可以確定鏈表的插入位置 即廣度遍歷插入點總在末尾 深度遍歷插入點在首部 詳細看代碼 public static void searchFile(String path List<Object> resultList) { File file = new File(path); if (file isDirectory()) { LinkedList<File[]> levelLinked = new LinkedList<File[]>(); levelLinked add(file listFiles()); do { File[] childFiles = levelLinked remove( ); for (File cf : childFiles) { if (cf isDirectory()) { // 此處控制遍歷的方向 levelLinked add(cf listFiles());// 廣度 // levelLinked add( cf listFiles());//深度 } else { String fileName = cf getName();// 文件名 有後綴 String filePath = cf getAbsolutePath();// 絕對路徑 String fileParent = cf getParent();// 上層路徑 註意最後的 / // 比較算法 找到後放入集合 String[] sf = { fileName fileParent filePath }; resultList add(sf); } } } while (levelLinked size() > ); } } 此處加入壹些API提供的工具類 希望有用 多後綴判斷 如 java class js等 String[] hz = {java class js}; Arrays sort(hz);//下面的搜索需要排序 例如 class的順序在java之前 如果不sort() class文件不會被查找 Arrays binarySearch(hz fn_);//fn_文件後綴 如果明確目錄的層次結構簡單 遞歸算法也是不錯的選擇 個人覺得 文件的搜索 應該單獨起線程

 //////////////////////// 采用遞歸的方式遍歷 文件夾和子文件中的所有文件 public void FindFile(string dirPath) //參數dirPath為指定的目錄 { //在指定目錄及子目錄下查找文件 在listBox 中列出子目錄及文件 DirectoryInfo Dir=new DirectoryInfo(dirPath); try { foreach(DirectoryInfo d in Dir GetDirectories()//查找子目錄 { FindFile(Dir+d ToString()+""); listBox Items Add(Dir+d ToString()+""); //listBox 中填加目錄名 } foreach(FileInfo f in Dir GetFiles("* ")) //查找文件 { listBox Items Add(Dir+f ToString()); //listBox 中填加文件名 } } catch(Exception e) { MessageBox Show(e Message); }

 }

  用下面代碼限制文件的類型 foreach(FileInfo f in Dir GetFiles("* ")) //查找文件

  “* ”指要訪問的文件的類型的擴展名 /////////////////////////////// 代碼改成如下 會不會好壹點

 DirectoryInfo TheFolder=new DirectoryInfo(folderFullName);

 DirectoryInfo[] dirInfo = TheFolder GetDirectories(); //遍歷文件夾 foreach(DirectoryInfo NextFolder in dirInfo) this listBox Items Add(NextFolder Name);

lishixinzhi/Article/program/net/201311/14311

  • 上一篇:網絡熱詞怎麽很多與親人稱呼有關?
  • 下一篇:曾經的體操美女張豆豆退役後的生活怎麽樣,她現在從事什麽職業?
  • copyright 2024編程學習大全網