在我的程序中,我需要检查文件的几个路径是否在系统临时文件文件夹中(例如 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之外,还有其他简单的解决方案吗?
答案 0 :(得分:1)
System.IO.Directory.Exists()
也可以采用相对路径。我认为应该为你做。
答案 1 :(得分:0)
StartsWith方法无法解决这类问题:
tempPath是:/ tmp /
fullPath是:/ tmp /../ etc / evil.cnf
您需要首先规范化两个路径,这将解决像../
这样的问题答案 2 :(得分:0)
我相信你的代码甚至可以用于thomasrutter的例子,因为路径是由Path.GetFullPath解析的。