是否有方法来确定文件路径是否嵌套在.Net中的目录路径中

时间:2010-09-07 15:41:53

标签: .net path filesystems

我想确定文件夹是否包含文件,两者都是由路径指定的。

乍一看,这似乎很简单。只需检查文件路径是否以目录路径开头。但是,这种天真的检查忽略了几个问题:

  • 路径可以是相对的或绝对的
  • 路径可以使用备用目录分隔符
  • 路径可能会使用不一致的大小写,这取决于操作系统
  • 不同的路径可能指的是相同的位置
  • 可能还有一些我不知道的事情

框架中是否存在现有方法,还是我必须自己编写?

2 个答案:

答案 0 :(得分:2)

据我所知,没有内置的.NET方法可以做到这一点,但是下面的函数应该使用FileInfo和DirectoryInfo类来完成这个:

public static bool FolderContainsFile(String folder, String file)
{
    //Create FileInfo and DirectoryInfo objects
    FileInfo fileInfo = new FileInfo(file);
    DirectoryInfo dirInfo = new DirectoryInfo(folder);

    DirectoryInfo currentDirectory = fileInfo.Directory;
    if (dirInfo.Equals(currentDirectory))
        return true;

    while (currentDirectory.Parent != null)
    {
        currentDirectory = currentDirectory.Parent;

        if(currentDirectory.Equals(dirInfo)
            return true;
    }

    return false;

}

答案 1 :(得分:1)

我不确定它是否适用于所有情况,但我建议您查看Path.GetFullPath

Quote:返回指定路径字符串的绝对路径。