开发者

Is there a method to determine if a file path is nested within a directory path in .Net

I want to determine if a folder contains a file, when both are specified by a path.

At first glance this seems simple. Just check if the file path starts with the directory path. However, this naive check ignores several issues:

  • Paths may be relative or absolute
  • Paths may use the alternate directory separator
  • Paths may use inconsistent c开发者_如何学Goasing, which matters depending on the OS
  • Different paths may refer to the same location
  • Probably some more that I don't know about

Is there an existing method in the framework, or do I have to write my own?


As far as I know, there is no built-in .NET method to do this, but the following function should accomplish this using the FileInfo and DirectoryInfo classes:

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;

}


I'm not sure if it'll work in all cases, but I'd suggest looking at Path.GetFullPath.

Quote: Returns the absolute path for the specified path string.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜