/// <summary> /// Parses a full path containing the folder and filename, and creates /// the appropriate folder and file entries in the heirarchy. /// </summary> public FileEntry Add(string filename) { string fullPath = filename; string[] parts = fullPath.Split('\\'); FolderEntry currentEntry = rootFolder; for (int x = 0; x < parts.Length - 1; x++) // Last part should be a filename. { int index = currentEntry.FolderEntries.IndexOf(parts[x]); if (index == -1) { FolderEntry entry = new FolderEntry(parts[x], currentEntry); currentEntry.FolderEntries.Add(entry); currentEntry = entry; } else { currentEntry = currentEntry.FolderEntries[index]; } } FileEntry file = new FileEntry(parts[parts.Length - 1], currentEntry); currentEntry.FileEntries.Add(file); return(file); }
public FolderEntry LocateFolderByPath(string path) { path = FixPath(path); if (path == "") { return(rootFolder); } string[] parts = path.Split('\\'); FolderEntry currentEntry = rootFolder; // TODO: Consolidate the redundant code between this method and the Add method. for (int x = 0; x < parts.Length; x++) { int index = currentEntry.FolderEntries.IndexOf(parts[x]); if (index > -1) { currentEntry = currentEntry.FolderEntries[index]; } else { return(null); } } return(currentEntry); }
public FolderEntry[] ToArray() { FolderEntry[] entries = new FolderEntry[Count]; for (int x = 0; x < entries.Length; x++) { entries[x] = this[x]; } return(entries); }
public void Add(FolderEntry folder) { if (folder.ParentFolder != null) { //if (folder.ParentFolder.Name == folder.Name) //throw new Exception("Uhhh, double you tee eff?"); InnerList.Add(folder); } }
public void Remove(FolderEntry folder) { foreach (FileEntry entry in folder.FileEntries.ToArray()) { folder.FileEntries.Remove(entry); } foreach (FolderEntry entry in folder.FolderEntries.ToArray()) { folder.FolderEntries.Remove(entry); } InnerList.Remove(folder); }
public string[] GetRecursiveFileList(string path) { FolderEntry entry = LocateFolderByPath(path); if (entry == null) { return(new string[0]); } else { return(entry.GetRecursiveFileList()); } }
public FileEntry(string filename, FolderEntry parentFolder) { name = Path.GetFileNameWithoutExtension(filename); if (filename.IndexOf('.') > -1) { extension = Path.GetExtension(filename).Substring(1); } else { extension = ""; } this.parentFolder = parentFolder; }
protected void WriteFolder(IndentedTextWriter writer, FolderEntry folder) { writer.Indent += 2; writer.WriteLine("[" + folder.Name + "]"); foreach (FolderEntry childFolder in folder.FolderEntries) { WriteFolder(writer, childFolder); } foreach (string childFile in folder.FileList()) { writer.WriteLine(childFile); } writer.Indent -= 2; }
public bool RemoveFolder(string path) { FolderEntry entry = LocateFolderByPath(path); if (entry == null) { return(false); } if (entry.ParentFolder == null) { return(false); } entry.ParentFolder.FolderEntries.Remove(entry); return(true); }
public FileEntry LocateFileByPath(string path) { path = FixPath(path); string folder = Path.GetDirectoryName(path); FolderEntry folderEntry = LocateFolderByPath(folder); if (folderEntry == null) { return(null); } foreach (FileEntry fileEntry in folderEntry.FileEntries) { string entryLower = fileEntry.FullPath.ToLower(); string pathLower = path.ToLower(); if (entryLower == pathLower) { return(fileEntry); } } return(null); }
public FolderEntry(string name, FolderEntry parentFolder) { this.name = name; this.parentFolder = parentFolder; }