C#遍历指定文件夹中的所有文件和子文件夹
参考:http://www.cnblogs.com/skylaugh/archive/2012/09/23/2698850.html
DirectoryInfo TheFolder=new DirectoryInfo(folderFullName);
//遍历文件夹
foreach(DirectoryInfo NextFolder in TheFolder.GetDirectories())
this.listBox1.Items.Add(NextFolder.Name);
//遍历文件
foreach(FileInfo NextFile in TheFolder.GetFiles())
this.listBox2.Items.Add(NextFile.Name);
---------------------------------------------------------------------------------------------------------------
如何获取指定目录包含的文件和子目录
1. DirectoryInfo.GetFiles():获取目录中(不包含子目录)的文件,返回类型为FileInfo[],支持通配符查找;
2. DirectoryInfo.GetDirectories():获取目录(不包含子目录)的子目录,返回类型为DirectoryInfo[],支持通配符查找;
3. 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:分别用于获取文件的创建时间、访问时间、修改时间;
递归遍历文件夹和子文件夹:

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 7 namespace 遍历文件夹和子文件夹 8 { 9 class Program 10 { 11 private static FileStream fs; 12 private static StreamWriter sw; 13 14 static void Main(string[] args) 15 { 16 string path; 17 int leval=0; 18 19 Console.WriteLine("请输入需要列出内容的文件夹的完整路径和文件名:"); 20 path=Console.ReadLine(); 21 path.Replace('\\','/'); 22 23 fs = new FileStream("result.txt", FileMode.Create); 24 sw = new StreamWriter(fs); 25 26 //开始写入文件 27 sw.WriteLine("遍历结果如下:"); 28 sw.WriteLine(path); 29 30 listDirectory(path,leval); 31 32 //清空缓冲区 33 sw.Flush(); 34 //关闭流 35 sw.Close(); 36 fs.Close(); 37 Console.WriteLine("请按任意键继续……"); 38 Console.ReadKey(); 39 } 40 41 /// <summary> 42 /// 列出path路径对应的文件夹中的子文件夹和文件 43 /// 然后再递归列出子文件夹内的文件和文件夹 44 /// </summary> 45 /// <param name="path">需要列出内容的文件夹的路径</param> 46 /// <param name="leval">当前递归层级,用于控制输出前导空格的数量</param> 47 private static void listDirectory(string path,int leval) 48 { 49 DirectoryInfo theFolder = new DirectoryInfo(@path); 50 51 leval++; 52 53 //遍历文件 54 foreach (FileInfo NextFile in theFolder.GetFiles()) 55 { 56 for (int i = 0; i < leval; i++) sw.Write('\t'); 57 sw.Write("-->"); 58 sw.WriteLine(NextFile.Name); 59 } 60 61 //遍历文件夹 62 foreach (DirectoryInfo NextFolder in theFolder.GetDirectories()) 63 { 64 for (int i = 0; i < leval; i++) sw.Write('\t'); 65 sw.Write("--)"); 66 sw.WriteLine(NextFolder.Name); 67 listDirectory(NextFolder.FullName, leval); 68 } 69 } 70 } 71 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App