程序开发 > C# > 正文

C#遍历文件夹和查找指定文件

亮术网 2020-08-03 本网原创

当要列出某个文件夹里的所有文件夹和文件,或者要找指定文件,就要遍历该文件夹。文件夹都是一级一级的,递归恰好满足这一规律,下面的 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");

代码也通过测试,可以直接使用,只要路径正确、文件名指定的文件存在,又有对指定文件有访问权限,一定可以找到指定文件。