Esempio n. 1
0
        static void Delete(string path)
        {
            FileInfo      file;
            DirectoryInfo directories;

            try
            {
                FileAttributes attr = File.GetAttributes(path);
                if (attr.HasFlag(FileAttributes.Directory))
                {
                    directories = new DirectoryInfo(path);
                    foreach (DirectoryInfo dir in directories.GetDirectories())
                    {
                        ConsoleDrawings.PrintInformation($"Удаляем {dir.Name}");
                        dir.Delete(true);
                    }
                    if (directories.FullName == CurrentPath)
                    {
                        CurrentPath = directories.Parent.FullName;//присваиваем, чтобы сработала процедура, которая обновит список
                        ConsoleDrawings.PrintFoldersTree(CurrentPath, CurrentFoldersFiles, 1);
                    }
                    directories.Delete(true);
                }
                else
                {
                    file = new FileInfo(path);
                    file.Delete();
                    if (file.Directory.FullName == CurrentPath)
                    {
                        CurrentPath = file.Directory.FullName;//присваиваем, чтобы сработала процедура, которая обновит список
                        ConsoleDrawings.PrintFoldersTree(CurrentPath, CurrentFoldersFiles, 1);
                    }
                }
                ConsoleDrawings.PrintInformation("Удаление завершено");
            }
            catch (Exception e)
            {
                ConsoleDrawings.PrintError(e.Message);
                return;
            }
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            //фиксируем размеры окна, чтобы нельзя было его изменить
            WindowUtility.FixeConsoleWindow(Configuration.ConsoleHeight, Configuration.ConsoleWidth);

            //рисуем рамку для основной панели с папками/файлами
            ConsoleDrawings.PrintFrameLines(0, 0, Console.WindowWidth, Configuration.MainPanelHeight);
            ConsoleDrawings.PrintFrameLines(0, Configuration.MainPanelHeight, Console.WindowWidth, Configuration.InfoPanelHeight);


            //считывание сохраненного пути с последнего сеанса работы
            if (File.Exists("last.state"))
            {
                using (StreamReader sr = new StreamReader("last.state")) //File.OpenText(inputFile))
                {
                    string strState = "";
                    try
                    {
                        strState = sr.ReadLine();
                    }
                    catch (Exception)
                    {
                        CurrentPath = "C:\\";
                    }
                    CurrentPath = strState;
                }
            }
            else
            {
                CurrentPath = "C:\\";
            }
            ConsoleDrawings.PrintFoldersTree(CurrentPath, CurrentFoldersFiles, 1);
            //справка:
            ConsoleDrawings.PrintInformation("help - список всех поддерживаемых комманд");

            bool          exit      = false;
            List <string> arguments = new List <string>();


            while (!exit)
            {
                ConsoleDrawings.TakeNewCommand();
                currentCommand = Console.ReadLine();
                ConsoleDrawings.ClearMessageLine();
                arguments.Clear();//по завершении обработки команды очищаем список аргументов, чтобы корректно обработать следующую команду
                arguments.AddRange(currentCommand.Split(' '));

                string theCommand = arguments[0];
                arguments.Remove(theCommand);
                switch (theCommand.ToLower().Trim())
                {
                case "exit":
                    SaveLastState();
                    exit = true;
                    break;

                case "ls":
                    LSCommand(arguments);
                    break;

                case "cp":
                    CPCommand(arguments);
                    break;

                case "rm":
                    RMCommand(arguments);
                    break;

                case "file":
                    FILECommand(arguments);
                    break;

                case "help":
                    ConsoleDrawings.PrintInformation("Поддерживаемые команды: exit; ls; cp; rm; file. Введите команду с ключом /? чтобы получить подробное описание");
                    break;

                case "":
                    arguments.Clear();
                    break;

                default:
                    ConsoleDrawings.PrintWarning($"Невозможно обработать команду {theCommand}");
                    arguments.Clear();
                    break;
                }
            }
        }
Esempio n. 3
0
        static void LSCommand(List <string> arguments)
        {
            int pageNum;

            if (arguments.Count == 0)
            {
                ConsoleDrawings.PrintError("Неверные параметры...");
                return;
            }
            else if (arguments.Count == 1)
            {
                if (arguments[0] == "/?")
                {
                    ConsoleDrawings.PrintInformation("ls <путь> <номер страницы> - команда выводит дерево указанного каталога с указанным номером страницы");
                }
                else if (arguments[0] == "..")
                {
                    DirectoryInfo parentDirectory = Directory.GetParent(CurrentPath);
                    if (parentDirectory == null)
                    {
                        ConsoleDrawings.PrintWarning("Не существует родительской директории для указанного каталога");
                    }
                    else
                    {
                        CurrentPath = parentDirectory.FullName;
                        ConsoleDrawings.PrintFoldersTree(CurrentPath, CurrentFoldersFiles, 1);
                    }
                }
                else //if(Directory.Exists(arguments[0]))//если не указан номер страницы, выводим первую
                {
                    CurrentPath = arguments[0];
                    ConsoleDrawings.PrintFoldersTree(CurrentPath, CurrentFoldersFiles, 1);
                }
            }
            else if (arguments.Count == 2)  //если два аргумента в команде, значит можно реализовать команду
            {
                CurrentPath = arguments[0]; //первый аргумент должен быть путь
                try
                {
                    pageNum = Convert.ToInt32(arguments[1]);
                }
                catch (FormatException)
                {
                    pageNum = 1;
                    ConsoleDrawings.PrintWarning("Некорректный аргумент <номер страницы> - выводим 1ю страницу...");
                }
                if (pageNum == 0)
                {
                    pageNum = 1;
                }
                ConsoleDrawings.PrintFoldersTree(CurrentPath, CurrentFoldersFiles, pageNum);
            }
            else//если аргументов более 2х, возможно путь разделен пробелами
            {
                //пытаемся собрать путь, предположив, что он разделен пробелами
                string resPath = "";
                for (int i = 0; i < arguments.Count - 1; i++)
                {
                    resPath += arguments[i];
                    resPath += " ";
                }
                resPath = resPath.Trim();
                try
                {
                    pageNum = Convert.ToInt32(arguments[arguments.Count - 1]);
                }
                catch (FormatException)
                {
                    resPath += " ";
                    resPath += arguments[arguments.Count - 1];
                    pageNum  = 1;
                }
                CurrentPath = resPath;
                ConsoleDrawings.PrintFoldersTree(CurrentPath, CurrentFoldersFiles, pageNum);
                //ConsoleDrawings.PrintError("Невозможно распознать команду, - аргументов более 2х");
            }
        }