C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)...

本文介绍使用C#通过DirectoryInfo和FileInfo类遍历指定目录及其子目录下的所有文件的方法,包括直接获取指定目录下的文件、获取指定目录及其子目录下的所有文件,以及递归获取指定目录下所有子目录及其文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

File------实用类,提供许多静态方法,用于移动、删除、和复制文件。
Directory------实用类,提供许多静态方法,用于移动、删除和复制目录。
FileInfo------表示磁盘上的物理文件,具有可以处理此文件的方法,要完成对文件的读写工作,就必须创建Stream对像。
DirectoryInfo------表示磁盘上的物理目录,具有可以处理此目录的方法

这里提供了三种方法:

1、获得指定目录下的所有文件

2、获得指定目录及其子目录的所有文件

3、列出指定目录下及所其有子目录及子目录里更深层目录里的文件(需要递归)

代码如下:

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; namespace WebAppFile { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string filePath=@"c:\log\"; Response.Write("测试1,获得指定目录下的所有文件:<br>"); List<FileInfo> list1 = GetFilesByDir(filePath); foreach (FileInfo fi in list1) { Response.Write("完整路径:" + fi.FullName.ToString() + " 文件名:" + fi.Name + "<br>"); } Response.Write("<br><br>测试2,获得指定目录及其子目录的所有文件:<br>"); List<FileInfo> list2 = GetAllFilesByDir(filePath); foreach (FileInfo fi in list2) { Response.Write("完整路径:"+fi.FullName.ToString() +" 文件名:"+fi.Name+ "<br>"); } Response.Write("<br><br>测试3,列出指定目录下及所有子目录及子目录里更深层目录里的文件:<br>"); GetAllFiles(filePath); } /// <summary> /// 获得指定目录下的所有文件 /// </summary> /// <param name="path"></param> /// <returns></returns> public List<FileInfo> GetFilesByDir(string path) { DirectoryInfo di = new DirectoryInfo(path); //找到该目录下的文件 FileInfo[] fi = di.GetFiles(); //把FileInfo[]数组转换为List List<FileInfo> list = fi.ToList<FileInfo>(); return list; } /// <summary> /// 获得指定目录及其子目录的所有文件 /// </summary> /// <param name="path"></param> /// <returns></returns> public List<FileInfo> GetAllFilesByDir(string path) { DirectoryInfo dir = new DirectoryInfo(path); //找到该目录下的文件 FileInfo[] fi = dir.GetFiles(); //把FileInfo[]数组转换为List List<FileInfo> list = fi.ToList<FileInfo>(); //找到该目录下的所有目录里的文件 DirectoryInfo[] subDir = dir.GetDirectories(); foreach (DirectoryInfo d in subDir) { List<FileInfo> subList = GetFilesByDir(d.FullName); foreach (FileInfo subFile in subList) { list.Add(subFile); } } return list; } /// <summary> /// 列出指定目录下及所其有子目录及子目录里更深层目录里的文件(需要递归) /// </summary> /// <param name="path"></param> public void GetAllFiles(string path) { DirectoryInfo dir = new DirectoryInfo(path); //找到该目录下的文件 FileInfo[] fi = dir.GetFiles(); foreach (FileInfo f in fi) { Response.Write("完整路径:" + f.FullName.ToString() + " 文件名:" + f.Name + "<br>"); } //找到该目录下的所有目录再递归 DirectoryInfo[] subDir = dir.GetDirectories(); foreach (DirectoryInfo d in subDir) { GetAllFiles(d.FullName); } } } }

运行结果:

测试1,获得指定目录下的所有文件:
完整路径:c:\log\2010-12-17.xml 文件名:2010-12-17.xml
完整路径:c:\log\2010-12-20.xml 文件名:2010-12-20.xml

测试2,获得指定目录及其子目录的所有文件:
完整路径:c:\log\2010-12-17.xml 文件名:2010-12-17.xml
完整路径:c:\log\2010-12-20.xml 文件名:2010-12-20.xml
完整路径:c:\log\LogBak\2010-11-20.xml 文件名:2010-11-20.xml

测试3,列出指定目录下及所有子目录及子目录里更深层目录里的文件:
完整路径:c:\log\2010-12-17.xml 文件名:2010-12-17.xml
完整路径:c:\log\2010-12-20.xml 文件名:2010-12-20.xml
完整路径:c:\log\LogBak\2010-11-20.xml 文件名:2010-11-20.xml
完整路径:c:\log\LogBak\TempLog\2010-11-20.xml 文件名:2010-11-20.xml

关于第3种列出指定目录下及其所有子目录及子目录里更深层目录里的文件(需要递归),如何写成一个方法呢,希望大家来帮忙。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值