有没有一种方法可以确定文件路径是否嵌套在.Net中的目录路径中

发布于 2024-09-17 17:02:26 字数 258 浏览 7 评论 0原文

当文件夹都由路径指定时,我想确定文件夹是否包含文件。

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

  • 路径可能是相对或绝对的
  • 路径可能使用备用目录分隔符
  • 路径可能使用不一致的大小写,这取决于操作系统
  • 不同的路径可能引用相同的位置
  • 可能还有更多我不知道的问题了解

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

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 casing, 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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

指尖上得阳光 2024-09-24 17:02:26

据我所知,没有内置的 .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;

}

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;

}
听,心雨的声音 2024-09-24 17:02:26

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

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文