How can I check whether a path to a file that doesn\'t necessarily exists points to a location inside a particular directory? Say I have a method:
bool IsInside(
Do you need to handle relative paths (../../someFile.txt)? Something like this would work:
private bool IsInside(DirectoryInfo path, DirectoryInfo folder)
{
if (path.Parent == null)
{
return false;
}
if (String.Equals(path.Parent.FullName, folder.FullName, StringComparison.InvariantCultureIgnoreCase))
{
return true;
}
return IsInside(path.Parent, folder);
}
Then call it like this:
DirectoryInfo folder = new DirectoryInfo("C:\\Users\\Dude\\Hi");
DirectoryInfo path = new DirectoryInfo("C:\\Users\\Dude\\Hi\\SubFolder\\SubSubFolder\\tile.txt");
bool result = IsInside(path, folder);
You could try the string.IndexOf method. If you use the overload with the StringComparison enumeration it should give you the result you need.
From above link:
Reports the zero-based index of the first occurrence of one or more characters, or the first occurrence of a string, within this string. The method returns -1 if the character or string is not found in this instance.
bool IsInside(string folder, string path)
{
if (path.IndexOf(folder,StringComparison.OrdinalIgnoreCase) != -1)
return true;
else
return false;