繁体   English   中英

如何使用文件夹名称C#获取文件夹路径

[英]How to get the folder path using folder name c#

我正在使用C#通过提供文件夹名称来获取Windows系统中特定文件夹的确切路径。 他们通过提供文件夹名称来获取文件夹路径的任何方法,其中文件夹名称将是唯一的。

更新:

在运行时以当前时间为名称创建文件夹。 该过程由应用程序完成。 在这里,我知道文件夹的名称,但我不知道路径,因为路径是由用户在安装过程中选择的,并且安装是在很长时间之前完成的。

这大大改变了问题。 为什么不使用该应用程序告诉您它的位置:

http://msdn.microsoft.com/en-us/library/system.windows.forms.application.startuppath.aspx


几年前,我有一个类似的想法,并将其写为“代码项目提示”:

http://www.codeproject.com/Tips/132804/Open-folders-using-a-Run-Command

否则,您将需要索引PC上的每个文件夹,并使它们具有唯一的名称,并以这种方式查找完整路径。

我的另一个建议是使用LogParser作为使用C#在磁盘上查找所有exe文件最有效方法? 它是免费的Microsoft产品,但我不确定是否具有重新分配权限,上次使用时必须将其单独包含在软件包中。 它全程飞翔,比超速行驶的火车快!

我找到了一个找到文件夹的Log Parser示例 ,您可以尝试一下并对其进行修改(如果有用):

SELECT TOP 1 * FROM C:\TFS\Project\*.* WHERE INDEX_OF(Path, 'Database') > 0

http://visuallogparser.codeplex.com/上的老兄们向我们提供了源代码。

在VS2010中打开VisualLogParser解决方案,忽略有关调试的提示,在解决方案加载F5后,将组合框设置为FS(FileSystem),粘贴此查询并按go。

以下链接

string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;

您可能会使用类似的方法,但是它会相当慢,具体取决于需要浏览多少个文件夹。

FindFullPath(rootFolder, folderNameToLookFor)一样使用它

public static string FindFullPath(string path, string folderName)
{
    if (string.IsNullOrWhiteSpace(folderName) || !Directory.Exists(path))
    {
        return null;
    }
    var di = new DirectoryInfo(path);
    return findFullPath(di, folderName);
}
private static string findFullPath(DirectoryInfo directoryInfo, string folderName)
{
    if (folderName.Equals(directoryInfo.Name, StringComparison.InvariantCultureIgnoreCase))
    {
        return directoryInfo.FullName;
    }
    try
    {
        var subDirs = directoryInfo.GetDirectories();
        return subDirs.Select(subDir => findFullPath(subDir, folderName)).FirstOrDefault(fullPath => fullPath != null);
    }
    catch
    {
        // DirectoryNotFound, Security, UnauthorizedAccess
        return null;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM