首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据文件名找到文件的路径?

如何根据文件名找到文件的路径?
EN

Stack Overflow用户
提问于 2010-05-05 15:30:24
回答 3查看 1.3K关注 0票数 0

根据这个文件名我有一个文件名。我需要找到文件的路径。如何根据文件名找到文件的路径?需要根据文件名示例代码找到文件的路径:

代码语言:javascript
复制
string path=      System.IO.Directory.GetDirectories(@"c:\", "kategori",System.IO.SearchOption.AllDirectories).First();

但我需要:

代码语言:javascript
复制
string path=      System.IO.Directory.GetDirectories(@"anyFolder", "kategori",System.IO.SearchOption.AllDirectories).First();

我需要下面的内容

代码语言:javascript
复制
Main()
{
string path = PathFinder("Afilename")
}

output: C:\myFiles\AfileName

string PathFinder(string fileName)
{

..................

.................

........

.......

....

..

.

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-05 15:34:11

可能像这样的函数可以为您工作:

代码语言:javascript
复制
public static String SearchFileRecursive(String baseFolderPath, String fileName)
    {
        // Returns, if found, the full path of the file; otherwise returns null.
        var response = Path.Combine(baseFolderPath, fileName);
        if (File.Exists(response))
        {
            return response;
        }

        // Recursion.
        var directories = Directory.GetDirectories(baseFolderPath);
        for (var i = 0; i < directories.Length; i++)
        {
            response = SearchFileRecursive(directories[i], fileName);
            if (response != null) return response;
        }

        // { file was not found }

        return null;
    }
票数 3
EN

Stack Overflow用户

发布于 2010-05-05 16:02:53

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

票数 2
EN

Stack Overflow用户

发布于 2010-05-05 16:49:27

我想要更多的LINQish方式:

代码语言:javascript
复制
public static IEnumerable<FileInfo> FindFile(string fileName)
{
    if (String.IsNullOrEmpty(fileName))
        throw new ArgumentException("fileName");

    return Directory.GetLogicalDrives()
                    .SelectMany(drive => FindFile(fileName, drive));
}

public static IEnumerable<FileInfo> FindFile(string fileName, string folderName)
{
    if (String.IsNullOrEmpty(fileName))
        throw new ArgumentException("fileName");
    if (String.IsNullOrEmpty(fileName))
        throw new ArgumentException("folderName");

    var matchingFiles = Directory.EnumerateFiles(folderName)
                                 .Where(file => Path.GetFileName(file) == fileName)
                                 .Select(file => new FileInfo(file));

    var matchingFilesFromSubDirs = Directory.EnumerateDirectories(folderName)
                                            .SelectMany(directory => FindFile(fileName, directory));

    return matchingFiles.Concat(matchingFilesFromSubDirs);
}

可通过以下方式使用:

代码语言:javascript
复制
foreach (var file in FindFile("myFile.ext"))
{
    Console.WriteLine("Name: " + file.FullName);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2771287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档