只遍历子文件夹和根文件夹下面文件目录的方法:
DirectoryInfo theFolder = new DirectoryInfo(@"E:\工作\Work");//文件的操作类 FileInfo[] fileRootInfo = theFolder.GetFiles();//返回当前根目录的文件 foreach (FileInfo NextFile in fileRootInfo) { this.listBox1.Items.Add(NextFile.Name);//遍历文件 } DirectoryInfo[] dirInfo = theFolder.GetDirectories();//返回当前文件子目录 //遍历文件夹 foreach (DirectoryInfo NextFolder in dirInfo) { // this.listBox2.Items.Add(NextFolder.Name); FileInfo[] fileInfo = NextFolder.GetFiles();//返回当前文件子目录的文件 foreach (FileInfo NextFile in fileInfo) //遍历文件 this.listBox2.Items.Add(NextFile.FullName); }
递归遍历文件夹下面所有的文件夹的子类目录:
public ArrayList al = new ArrayList(); //我把ArrayList当成动态数组用 public void GetAllDirList(string strBaseDir) { DirectoryInfo di = new DirectoryInfo(strBaseDir); DirectoryInfo[] diA = di.GetDirectories(); for (int i = 0; i < diA.Length; i++) { al.Add(diA[i].FullName); //diA[i].FullName是某个子目录的绝对地址,把它记录在ArrayList中 GetAllDirList(diA[i].FullName); //注意:递归了。逻辑思维正常的人应该能反应过来 } for (int i = 0; i < al.Count; i++) { this.listBox1.Items.Add(al[i].ToString() + " "); //textBox1是容器,拷贝我的代码,注意要换一个你自己的容器 } }
第三法:
var dirSource = Directory.GetFiles(@"E:\工作\Work", "*.xls", SearchOption.AllDirectories); foreach(string str in dirSource) { string result = Regex.Match(str,@"[^\\]+$").Value; this.listBox1.Items.Add(result + " "); }
第一参数是路径
第二参数是用于指定搜索操作是应包含所有子目录还是仅包含当前目录的枚举值之一。
第三参数的解释如下:
// 摘要: // 指定是搜索当前目录,还是搜索当前目录及其所有子目录。 [Serializable] [ComVisible(true)] public enum SearchOption { // 摘要: // 仅在搜索操作中包括当前目录。 TopDirectoryOnly = 0, // // 摘要: // 在搜索操作中包括当前目录和所有它的子目录。 此选项在搜索中包括重解析点,比如安装的驱动器和符号链接。 AllDirectories = 1, }