前言:初步梳理記錄,以后慢慢總結更多的方法...
方法一:使用微軟提供的方法:Dicrectory類中的:public static string[] GetFiles(string path, string searchPattern, SearchOption searchOption);
path-獲取文件的路徑;searchPattern-要獲取的包含的文件標記,使用"."可表示所有文件類型;searchaOption是一個枚舉,SearchOption.AllDirectories表示獲取當前目錄及所有子目錄;
獲取的結果包含完整路徑,處理下即可:
Directory.GetFiles("filePath", ".", SearchOption.AllDirectories);
方法二:使用自定義循環讀取某一路徑下所有的文件:
貼代碼了,這里使用的是C#控制台輸出文件名到記事本中,文件名使用逗號隔開:
using System; using System.IO; namespace ConsoleApplication1 { class Program { public static string FileName = ""; public static void Main(string[] args) { bool isContinute = true; WriteMessage("結束程序請輸入1"); WriteMessage("請輸入要獲取文件名的路徑:"); string path = Console.ReadLine(); do { if (string.IsNullOrEmpty(path)) { WriteMessage("路徑不存在!請重新輸入"); } else { DirectoryInfo dir = new DirectoryInfo(path); if (dir.Exists == false) { WriteMessage("路徑不存在!請重新輸入"); } else { FileName = ""; GetChildDicsName(dir); WriteMessage(FileName); Console.WriteLine("獲取該路徑下文件名成功!你可以繼續輸入新的路徑"); } } path = Console.ReadLine(); isContinute = path != "1"; } while (isContinute); } public static DirectoryInfo[] GetChildDicsName(DirectoryInfo dir) { FileInfo[] fileArray = dir.GetFiles(); DirectoryInfo[] childDirs = dir.GetDirectories(); foreach (FileInfo file in fileArray) { FileName += file.Name + ","; } if (childDirs.Length > 0) { foreach (DirectoryInfo dirChild in childDirs) { GetChildDicsName(dirChild); } } return childDirs; } public static void WriteMessage(string message) { Console.WriteLine(message); //File.Create(@"C:\Users\Public\Desktop\test.txt"); FileStream fs = File.Open(@"C:\Users\Public\Desktop\test.txt", FileMode.Append); StreamWriter sw = new StreamWriter(fs); sw.WriteLine(message); //這里是寫入的內容 sw.Close(); fs.Close(); } } }
控制台信息截圖: