1

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

4

3 回答 3

1

更新:

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

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

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,将combo-box设置为FS(FileSystem),粘贴此查询并按go。

于 2013-08-24T07:13:52.867 回答
0

请参阅以下链接

string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;
于 2013-08-24T07:12:19.190 回答
0

您可能可以使用这样的东西,但它会很慢,具体取决于需要查看多少个文件夹。

像这样使用它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;
    }
}
于 2013-08-24T07:43:31.057 回答