C#中获得文件夹下所有文件的两种方法

     如果想要获得一个文件夹下所有的文件,对于大家来说应该很简单,此处也做了一下总结,归为两种方法,闲话不多说,直接贴码:

方法一: 利用递归的方法获得所有文件

        /// <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
        }

两种方法都可以获得某个文件夹下所有的文件,一般情况下为了简单,大家都会用第二种方法,但是第一种方法也应该知道,它体现了 “递归” 的思想!