//遍历一个目录下所有的文件列表,代码实例
DirectoryInfo dir = new DirectoryInfo(folderName);var list = GetAll(dir);
/// <summary> /// 搜索文件夹中的文件 /// </summary> /// <param name="dir"></param> /// <returns></returns> private static List<string> GetAll(DirectoryInfo dir) { List<string> fileList = new List<string>(); FileInfo[] allFile = dir.GetFiles(); foreach (FileInfo fi in allFile) { fileList.Add(fi.FullName); } DirectoryInfo[] allDir= dir.GetDirectories(); foreach (DirectoryInfo d in allDir) { fileList.AddRange(GetAll(d)); } return fileList; }
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,获得指定目录下的所有文件:"); Listlist1 = GetFilesByDir(filePath); foreach (FileInfo fi in list1) { Response.Write("完整路径:" + fi.FullName.ToString() + " 文件名:" + fi.Name + " "); } Response.Write(" 测试2,获得指定目录及其子目录的所有文件: "); List list2 = GetAllFilesByDir(filePath); foreach (FileInfo fi in list2) { Response.Write("完整路径:"+fi.FullName.ToString() +" 文件名:"+fi.Name+ " "); } Response.Write(" 测试3,列出指定目录下及所有子目录及子目录里更深层目录里的文件: "); GetAllFiles(filePath); } /// /// 获得指定目录下的所有文件 /// /// ///public List GetFilesByDir(string path) { DirectoryInfo di = new DirectoryInfo(path); //找到该目录下的文件 FileInfo[] fi = di.GetFiles(); //把FileInfo[]数组转换为List List list = fi.ToList (); return list; } /// /// 获得指定目录及其子目录的所有文件 /// /// ///public List GetAllFilesByDir(string path) { DirectoryInfo dir = new DirectoryInfo(path); //找到该目录下的文件 FileInfo[] fi = dir.GetFiles(); //把FileInfo[]数组转换为List List list = fi.ToList (); //找到该目录下的所有目录里的文件 DirectoryInfo[] subDir = dir.GetDirectories(); foreach (DirectoryInfo d in subDir) { List subList = GetFilesByDir(d.FullName); foreach (FileInfo subFile in subList) { list.Add(subFile); } } return list; } /// /// 列出指定目录下及所其有子目录及子目录里更深层目录里的文件(需要递归) /// /// 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 + " "); } //找到该目录下的所有目录再递归 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种列出指定目录下及其所有子目录及子目录里更深层目录里的文件(需要递归),如何写成一个方法呢,希望大家来帮忙。