How to check if one path is a child of another path?
Unfortunately it's not as simple as StartsWith
.
Here's a better answer, adapted from this duplicate question. I've made it an extension method for ease of use. Also using a brute-force catch
as just about any method that accesses the file system can fail based on user permissions
public static bool IsSubDirectoryOf(this string candidate, string other) { var isChild = false; try { var candidateInfo = new DirectoryInfo(candidate); var otherInfo = new DirectoryInfo(other); while (candidateInfo.Parent != null) { if (candidateInfo.Parent.FullName == otherInfo.FullName) { isChild = true; break; } else candidateInfo = candidateInfo.Parent; } } catch (Exception error) { var message = String.Format("Unable to check directories {0} and {1}: {2}", candidate, other, error); Trace.WriteLine(message); } return isChild; }