在嵌套文件夹中查找文件

时间:2010-05-14 11:20:32

标签: c# asp.net

如何在嵌套文件夹中搜索文件?

7 个答案:

答案 0 :(得分:3)

看看这个功能

System.IO.DirectoryInfo.GetFiles("SearchPattern",SearchOption.AllDirectories)

http://msdn.microsoft.com/en-us/library/ms143327.aspx

答案 1 :(得分:1)

您需要以递归方式执行此操作。请点击以下链接查看代码示例。

http://support.microsoft.com/kb/303974

答案 2 :(得分:1)

使用递归。

编写一个搜索特定文件夹中文件的方法。 从内部为每个子目录调用方法,并让它在找到文件时返回路径。

Pseudo-C#-Code(仅用于获取想法):

public string SearchFile (string path, string filename)
{
    if (File.exists(path+filename)) return path;

    foreach(subdir in path)
    {
        string dir = Searchfile(subdirpath,filename);
        if (dir != "") return dir;
    }
}

这将遍历所有子目录并返回搜索到的文件的路径(如果它在那里),否则为空字符串。

答案 3 :(得分:1)

试试这个:

static string SearchFile(string folderPath, string fileToSearch)
{
    string foundFilePath = null;
    ///Get all directories in current directory
    string[] directories = Directory.GetDirectories(folderPath);

    if (directories != null && directories.Length > 0)
    {
        foreach (string dirPath in directories)
        {
            foundFilePath = SearchFile(dirPath, fileToSearch);
            if (foundFilePath != null)
            {
                return foundFilePath;
            }
        }                
    }

    string[] files = Directory.GetFiles(folderPath);
    if (files != null && files.Length > 0)
    {
        foundFilePath = files.FirstOrDefault(filePath => Path.GetFileName(filePath).Equals(fileToSearch, StringComparison.OrdinalIgnoreCase));                
    }

    return foundFilePath;
}

答案 4 :(得分:0)

尝试在codeplex中搜索流畅的路径...它提供了使用lambdas / linq搜索目录中文件的快捷方式

答案 5 :(得分:0)

查看DirectoryInfo课程。

你可能需要进行一些递归

答案 6 :(得分:0)

使用Linq和 Directory.EnumerateFiles

var files =
    from file in Directory.EnumerateFiles(rootFolder,searchFor,SearchOption.AllDirectories)
    select file;