前言:初步梳理记录,以后慢慢总结更多的方法...
方法一:使用微软提供的方法: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(); } } }
控制台信息截图: