如果想要获得一个文件夹下所有的文件,对于大家来说应该很简单,此处也做了一下总结,归为两种方法,闲话不多说,直接贴码:
方法一: 利用递归的方法获得所有文件
/// <summary> /// 存储文件的变量 /// </summary> List<System.IO.FileInfo> FileList = new List<System.IO.FileInfo>(); /// <summary> /// 获得文件夹下所有的文件(递归) /// </summary> /// <param name="dir">文件夹的目录</param> /// <returns>返回所有文件</returns> List<System.IO.FileInfo> GetAllFileInfo(System.IO.DirectoryInfo dir) { System.IO.FileInfo[] allFile = dir.GetFiles(); foreach (System.IO.FileInfo file in allFile) { FileList.Add(file); } System.IO.DirectoryInfo[] allDir = dir.GetDirectories(); foreach (System.IO.DirectoryInfo d in allDir) { GetAllFileInfo(d); } return FileList; }
方法二:利用类库,直接获得所有文件
/// <summary> /// 获得文件夹下所有的文件(类库调用) /// </summary> /// <param name="dir">文件夹的目录</param> /// <returns>返回所有文件</returns> System.IO.FileInfo[] GetAllFileInfo2(System.IO.DirectoryInfo dir) { return dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories); }
调用端的代码:
private void button1_Click(object sender, EventArgs e) { System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(@"C:UserswjhDesktop测试专用包"); #region 调用端(调用递归的方法) //List<System.IO.FileInfo> allFile= GetAllFileInfo(dir); //foreach (System.IO.FileInfo file in allFile) //{ // MessageBox.Show(file.Name); //} #endregion #region 调用端(类库的方法) System.IO.FileInfo[] allFiles = GetAllFileInfo2(dir); foreach (System.IO.FileInfo file in allFiles) { MessageBox.Show(file.Name); } #endregion }
两种方法都可以获得某个文件夹下所有的文件,一般情况下为了简单,大家都会用第二种方法,但是第一种方法也应该知道,它体现了 “递归” 的思想!