有没有简单的方法来检查文件的路径是否在某个文件夹(.NET框架)中?

时间:2009-02-19 12:13:06

标签: c# .net file path directory

在我的程序中,我需要检查文件的几个路径是否在系统临时文件文件夹中(例如 C:\ Users \ Roman \ AppData \ Local \ Temp )。 我没有在 System.IO.File System.IO.Directory System.IO.Path 类中找到任何方法。所以我创建了自己的:

public static bool IsSafeToDeleteFileOrDirectory(string path)
{
    try
    {
        string tempPath = Path.GetFullPath(
                    Path.Combine(Path.GetTempPath(), ".\\")
                    );
        string fullPath = Path.GetFullPath(path);
        return fullPath.StartsWith(tempPath) &&
               fullPath.Length > tempPath.Length;
    }
    catch (Exception ex)
    {}

    return false;            
}

但我不确定它是否会一直有效。 除了遍历文件夹树并检查每个子文件夹是否存在且其父文件夹是TEMP之外,还有其他简单的解决方案吗?

3 个答案:

答案 0 :(得分:1)

System.IO.Directory.Exists()也可以采用相对路径。我认为应该为你做。

答案 1 :(得分:0)

StartsWith方法无法解决这类问题:

tempPath是:/ tmp /

fullPath是:/ tmp /../ etc / evil.cnf

您需要首先规范化两个路径,这将解决像../

这样的问题

答案 2 :(得分:0)

我相信你的代码甚至可以用于thomasrutter的例子,因为路径是由Path.GetFullPath解析的。