public void TraverseDirectory(int depth) { OutputWriter.WriteEmptyLine(); int initialIdentation = SessionData.currentPath.Split('\\').Length; Queue <string> subFolders = new Queue <string>(); subFolders.Enqueue(SessionData.currentPath); while (subFolders.Count != 0) { string currentPath = subFolders.Dequeue(); int identation = currentPath.Split('\\').Length - initialIdentation; if (depth - identation < 0) { break; } OutputWriter.WriteMessageOnNewLine(string.Format("{0}{1}", new string('-', identation), currentPath)); try { foreach (var file in Directory.GetFiles(currentPath)) { int indexOfLastSlash = file.LastIndexOf("\\"); for (int i = 0; i < indexOfLastSlash; i++) { OutputWriter.WriteMessage("-"); } OutputWriter.WriteMessageOnNewLine(file.ToString()); } foreach (string directoryPath in Directory.GetDirectories(currentPath)) { subFolders.Enqueue(directoryPath); } } catch (UnauthorizedAccessException) { OutputWriter.DisplayException(ExceptionMessages.UnauthorizedAccessExceptionMessage); } } }
public void StartReadingCommands() { OutputWriter.WriteMessage($"{SessionData.currentPath}> "); string input = Console.ReadLine(); input = input.Trim(); while (input != endCommand) { this.interpreter.InterpredCommand(input); OutputWriter.WriteMessage($"{SessionData.currentPath}> "); input = Console.ReadLine(); input = input.Trim(); } if (SessionData.taskPool.Count != 0) { Task.WaitAll(SessionData.taskPool.ToArray()); } }