C#中获得文件夹下所有文件的两种方法
如果想要获得一个文件夹下所有的文件,对于大家来说应该很简单,此处也做了一下总结,归为两种方法,闲话不多说,直接贴码:
方法一: 利用递归的方法获得所有文件
复制代码
///
/// 存储文件的变量
///
List<System.IO.FileInfo> FileList = new List<System.IO.FileInfo>();
///
/// 获得文件夹下所有的文件(递归)
///
/// 文件夹的目录
/// 返回所有文件
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;
}
复制代码
方法二:利用类库,直接获得所有文件
复制代码
///
/// 获得文件夹下所有的文件(类库调用)
///
/// 文件夹的目录
/// 返回所有文件
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:\Users\wjh\Desktop\测试专用包");
#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
}
复制代码
两种方法都可以获得某个文件夹下所有的文件,一般情况下为了简单,大家都会用第二种方法,但是第一种方法也应该知道,它体现了 “递归” 的思想!