Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有任何简单的方法可以检查文件路径是否位于某个文件夹(.NET framework)内?_C#_.net_File_Path_Directory - Fatal编程技术网

C# 是否有任何简单的方法可以检查文件路径是否位于某个文件夹(.NET framework)内?

C# 是否有任何简单的方法可以检查文件路径是否位于某个文件夹(.NET framework)内?,c#,.net,file,path,directory,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 =

在我的程序中,我需要检查文件的几个路径是否在系统临时文件文件夹中(例如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之外,还有其他简单的解决方案吗?

StartWith方法将无法解决此类问题:

临时路径为:/tmp/

完整路径为:/tmp/。/etc/evil.cnf


您需要首先规范化这两个路径,这将解决任何类似../

的问题,也可以采用相对路径。我认为这应该对您有所帮助。

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