private StoreFolder CreateFolderImpl(string path)
{
string[] components = path.Split(Separators, StringSplitOptions.RemoveEmptyEntries);
if(components.Length == 0) {
return null;
}
StoreFolder parent = _root;
StoreFolder folder = null;
// locate the parent
int position = 0;
int length = components.Length;
while(position < (length - 1)) {
if(parent.Subfolders.TryGetValue(components[position], out folder) == false) {
break;
}
parent = folder;
position++;
}
// create the required folders
while(position < length) {
string name = components[position];
folder = new StoreFolder(name);
parent.Subfolders.Add(name, folder);
parent = folder;
position++;
}
return folder;
}