C#遍历文件夹和查找指定文件
当要列出某个文件夹里的所有文件夹和文件,或者要找指定文件,就要遍历该文件夹。文件夹都是一级一级的,递归恰好满足这一规律,下面的 C# 代码将使用递归方法实现。
用C#遍历文件夹并列出该文件夹中的所有子文件夹和文件,跟在文件夹中查找指定文件的实现方法是一样的,只不过目的不同,为了便于使用,将列出两种实现方法。
一、C#遍历文件夹并列出所有子文件夹和文件
/// <summary>
/// C#遍历文件夹和文件
/// </summary>
/// <param name="path">文件夹路径</param>
private void ForeachForldersAndFiles(string path)
{
DirectoryInfo di = new DirectoryInfo(path);
DirectoryInfo[] arrDir = di.GetDirectories();
foreach (DirectoryInfo dir in arrDir)
{
Response.Write("<br />" + dir.Name + ":<br />");
ForeachForldersAndFiles(di + dir.ToString() + "\\");
}
foreach (FileInfo fi in di.GetFiles("*.*"))
{
Response.Write(fi.Name + "<br />");
}
}
调用方法:ForeachForldersAndFiles(@"G:\xq\");
经过测试,能准确的列出任意文件夹中所有子文件夹和文件,不过必须确保代码对指定的文件夹有访问权限。
二、C#在指定文件夹中查找指定文件
/// <summary>
/// C#查找指定文件
/// </summary>
/// <param name="filePath">文件夹路径</param>
/// <param name="fileName">查找文件名</param>
/// <returns>找到返回真,否则返回假</returns>
private bool FindFile(string filePath, string fileName)
{
if (string.IsNullOrEmpty(fileName)) return false;
DirectoryInfo di = new DirectoryInfo(filePath);
DirectoryInfo[] arrDir = di.GetDirectories();
foreach (DirectoryInfo dir in arrDir)
{
if (FindFile(di + dir.ToString() + "\\", fileName))
return true;
}
foreach (FileInfo fi in di.GetFiles("*.*"))
{
if (fi.Name == fileName)
return true;
}
return false;
}
调用方法:FindFile(@"G:\xq\", "test.txt");
代码也通过测试,可以直接使用,只要路径正确、文件名指定的文件存在,又有对指定文件有访问权限,一定可以找到指定文件。