Пример #1
0
        public static void Main(string[] args)
        {
            Console.Title         = "BRB Console File Manager";
            Console.CursorVisible = false;
            Console.SetWindowSize(200, 50);
            CFMF.DrawInterface();
            ParseCommand(@"cd c:\");
            Console.SetCursorPosition(0, 0);
            Thread WindowSizeUpdater = new Thread(UpdateWindowSize);

            WindowSizeUpdater.Start();
            CFMF.SetCursorDefaultPosition();
            Command = string.Empty;
            while (Command.ToLower() != "exit")
            {
                Command = Console.ReadLine();
                ParseCommand(Command);
            }

            ThreadWork = false;
            WindowSizeUpdater.Join();
        }
Пример #2
0
 /// <summary>
 /// Обработка команд пользователя
 /// </summary>
 /// <param name="cmd"></param>
 private static void ParseCommand(string cmd)
 {
     if (cmd.ToLower() == "help")
     {
         CFMF.ShowCommandsList();
     }
     else if (cmd.ToLower() == "exit")
     {
         return;
     }
     else if (cmd.ToLower().StartsWith("cd "))
     {
         CFMF.ClearOutputArea();
         CFMF.ClearMainArea();
         cmd = cmd.Remove(0, 3).ToLower();
         if (cmd.StartsWith(@"c:\"))
         {
             if (Directory.Exists(cmd))
             {
                 CurrentDir = cmd;
                 FolderList = new List <string>();
                 FileList   = new List <string>();
                 foreach (string str in Directory.EnumerateDirectories(cmd))
                 {
                     FolderList.Add(str);
                 }
                 foreach (string str in Directory.EnumerateFiles(cmd))
                 {
                     FileList.Add(str);
                 }
                 CFMF.ShowPageFromList(1, FolderList, FileList);
             }
             else
             {
                 CFMF.SetTextIntoOutputArea($"Указанная папка ({cmd}) не существует.");
             }
         }
         else
         {
             CFMF.SetTextIntoOutputArea($"Указанная папка ({cmd}) не существует.");
         }
     }
     else if (cmd.ToLower().StartsWith("list "))
     {
         CFMF.ClearOutputArea();
         cmd = cmd.Remove(0, 5).ToLower();
         try
         {
             Convert.ToInt32(cmd);
             CFMF.ShowPageFromList(Convert.ToInt32(cmd), FolderList, FileList);
         }
         catch
         {
             CFMF.SetTextIntoOutputArea($"Указан некорректный номер страницы в команде list.");
         }
     }
     else if (cmd.ToLower().StartsWith("fi "))
     {
         cmd = cmd.Remove(0, 3).ToLower();
         if (Directory.Exists(CurrentDir + "\\" + cmd))
         {
             string result = string.Empty;
             result += $"Дата создания: {Directory.GetCreationTime(CurrentDir + "\\" + cmd).ToString()} Дата изменения: {Directory.GetLastWriteTime(CurrentDir + "\\" + cmd).ToString()}{Environment.NewLine}";
             result += $"Количество файлов: {Directory.GetFiles(CurrentDir + "\\" + cmd).Length.ToString()} Количество папок: {Directory.GetDirectories(CurrentDir + "\\" + cmd).Length.ToString()}{Environment.NewLine}";
             result += $"Владелец: {Directory.GetAccessControl(CurrentDir + "\\" + cmd, System.Security.AccessControl.AccessControlSections.Owner).GetOwner(typeof(NTAccount)).Value}";
             CFMF.SetTextIntoOutputArea(result);
         }
         else if (File.Exists(CurrentDir + "\\" + cmd))
         {
             string result = string.Empty;
             result += $"Дата создания: {File.GetCreationTime(CurrentDir + "\\" + cmd).ToString()} Дата изменения: {File.GetLastWriteTime(CurrentDir + "\\" + cmd).ToString()}{Environment.NewLine}";
             result += $"Размер файла (в байтах): {new FileInfo(CurrentDir + "\\" + cmd).Length.ToString()} Только для чтения: {(new FileInfo(CurrentDir + "\\" + cmd).IsReadOnly ? "да" : "нет")}{Environment.NewLine}";
             result += $"Размер файла (в мегабайтах): {(Convert.ToSingle((new FileInfo(CurrentDir + "\\" + cmd).Length / 1024)) / 1024f).ToString()}{Environment.NewLine}";
             result += $"Владелец: {File.GetAccessControl(CurrentDir + "\\" + cmd, System.Security.AccessControl.AccessControlSections.Owner).GetOwner(typeof(NTAccount)).Value}";
             CFMF.SetTextIntoOutputArea(result);
         }
         else
         {
             CFMF.SetTextIntoOutputArea($"Указанный файл или папка ({cmd}) не существует.");
         }
     }
     else if (cmd.ToLower().StartsWith("del "))
     {
         cmd = cmd.Remove(0, 4).ToLower();
         if (Directory.Exists(CurrentDir + "\\" + cmd))
         {
             try
             {
                 Directory.Delete(CurrentDir + "\\" + cmd, true);
                 ParseCommand($"cd {CurrentDir}");
                 CFMF.SetTextIntoOutputArea($"Папка {cmd} удалёна.");
             }
             catch (Exception ex)
             {
                 CFMF.SetTextIntoOutputArea($"Не удалось удалить папку {cmd}.{Environment.NewLine}Описание проблемы:{Environment.NewLine}{ex.Message}");
             }
         }
         else if (File.Exists(CurrentDir + "\\" + cmd))
         {
             try
             {
                 File.Delete(CurrentDir + "\\" + cmd);
                 ParseCommand($"cd {CurrentDir}");
                 CFMF.SetTextIntoOutputArea($"Файл {cmd} удалён.");
             }
             catch (Exception ex)
             {
                 CFMF.SetTextIntoOutputArea($"Не удалось удалить файл {cmd}.{Environment.NewLine}Описание проблемы:{Environment.NewLine}{ex.Message}");
             }
         }
         else
         {
             CFMF.SetTextIntoOutputArea($"Указанный файл или папка ({cmd}) не существует.");
         }
     }
     else if (cmd.ToLower().StartsWith("copy "))
     {
         cmd = cmd.Remove(0, 5).ToLower();
     }
     else
     {
         CFMF.SetTextIntoOutputArea("Команда не распознана. Введите help для получения списка команд.");
     }
     CFMF.SetTextIntoPathArea(CurrentDir);
     CFMF.SetCursorDefaultPosition();
 }