public D2pDirectory[] GetDirectoriesTree(string directory) { List <D2pDirectory> result = new List <D2pDirectory>(); string[] directoriesName = directory.Split(new char[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries); D2pDirectory[] result2; if (directoriesName.Length == 0) { result2 = new D2pDirectory[0]; } else { D2pDirectory current = this.m_rootDirectories.SingleOrDefault((D2pDirectory entry) => entry.Name == directoriesName[0]); if (current == null) { result2 = new D2pDirectory[0]; } else { result.Add(current); foreach (string dir in directoriesName.Skip(1)) { if (!current.HasDirectory(dir)) { result2 = result.ToArray(); return(result2); } current = current.TryGetDirectory(dir); result.Add(current); } result2 = result.ToArray(); } } return(result2); }
public D2pDirectory TryGetDirectory(string directory) { string[] directoriesName = directory.Split(new char[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries); D2pDirectory result; if (directoriesName.Length == 0) { result = null; } else { D2pDirectory current = this.m_rootDirectories.SingleOrDefault((D2pDirectory entry) => entry.Name == directoriesName[0]); if (current == null) { result = null; } else { foreach (string dir in directoriesName.Skip(1)) { if (!current.HasDirectory(dir)) { result = null; return(result); } current = current.TryGetDirectory(dir); } result = current; } } return(result); }