Ejemplo n.º 1
0
        static void Main(string[] args)
        {
start:
            if (!File.Exists(@"Settings.json"))
            {
                //Задаём стандартные настройки если файла нет
                Settings setUp = new Settings();
                setUp.copyCommand   = "copy";
                setUp.openCommand   = "open";
                setUp.upDirCommand  = "up";
                setUp.nextCommand   = "next";
                setUp.backCommand   = "back";
                setUp.deleteCommand = "delete";
                setUp.exitCommand   = "exit";

                setUp.sizePage   = 10;
                setUp.showHidden = false; // отображать или нет скрытые файлы
                while (true)
                {
                    Console.Clear();
                    Console.WriteLine("Введите путь для старта программы");
                    setUp.lastPath = Console.ReadLine();
                    if (Directory.Exists(setUp.lastPath))
                    {
                        break;
                    }
                }
                string pathSetUp = JsonSerializer.Serialize(setUp);
                File.WriteAllText(@"Settings.json", pathSetUp);
            }
            Settings set;
            string   pathSettings = File.ReadAllText(@"Settings.json");

            try
            {
                set = JsonSerializer.Deserialize <Settings>(pathSettings);
            }
            catch (JsonException)
            {
                File.Delete(@"Settings.json");
                goto start; // Прыжок для пересоздания файла, если файл json не соответствует условиям
            }
            FixWindowSize(set.sizePage);
            int    pageSize = 0;
            string path     = set.lastPath;

            while (true)
            {
                ShowList show = new ShowList(path, pageSize, set);
                Interface.Print(set.sizePage);
                string input = Console.ReadLine();
                if (input == set.exitCommand)
                {
                    set.lastPath = path;
                    string pathSet = JsonSerializer.Serialize(set);
                    File.WriteAllText(@"Settings.json", pathSet);
                    break;
                }
                ComComplete command = new ComComplete(input, show.list, path, pageSize, set);
                pageSize = command.newPageSize;
                path     = command.newPath;
            }
            Console.SetCursorPosition(0, 17 + set.sizePage);
        }
Ejemplo n.º 2
0
        public ComComplete(string input,
                           List <stringElement> files,
                           string path,
                           int pageSize,
                           Settings set)
        {
            char[]   delimeterForDisk = { ' ', ':' };
            string[] disk             = input.Split(delimeterForDisk);
            newPageSize = pageSize;
            for (int i = 0; i <= files.Count; i++)
            {
                if (i < files.Count)
                {
                    if (input == $"{set.openCommand} {files[i].titleElement}")
                    {
                        if (Directory.Exists(files[i].fileAddress))
                        {
                            newPath     = OpenDir(path, files[i].titleElement);
                            newPageSize = 0;
                        }
                        else if (File.Exists(files[i].fileAddress))
                        {
                            try
                            {
                                Process.Start(new ProcessStartInfo(files[i].fileAddress));
                                newPageSize = 0;
                                newPath     = path;
                            }
                            catch (Win32Exception)
                            {
                                ShowList.FileInformation(set.sizePage, "Файл не может быть открыт. Нажмите Enter чтобы продолжить");
                                Console.ReadLine();
                                newPageSize = 0;
                                newPath     = path;
                            }
                        }
                        break;
                    }
                    if (input == $"{set.copyCommand} {files[i].titleElement}")
                    {
                        if (Directory.Exists(files[i].fileAddress))
                        {
                            string copyPath = CheckDir(set.sizePage);
                            if (copyPath != null)
                            {
                                CopyDir(files[i].fileAddress, $"{copyPath}\\{files[i].titleElement}", true);
                                ShowList.FileInformation(set.sizePage, $"Каталог скопирован по адресу {copyPath}\\{files[i].titleElement}. Нажмите Enter чтобы продолжить");
                                Console.ReadLine();
                            }
                        }
                        else if (File.Exists(files[i].fileAddress))
                        {
                            string title = $"\\{files[i].titleElement}";
                            newPath     = CopyElement(files[i].fileAddress, title, set.sizePage);
                            newPageSize = 0;
                        }
                        newPath     = path;
                        newPageSize = 0;
                        break;
                    }
                    if (input == $"{set.deleteCommand} {files[i].titleElement}")
                    {
                        if (Directory.Exists(files[i].fileAddress))
                        {
                            ShowList.FileInformation(set.sizePage, "Вы точно хотите удалить этот каталог?(yes/no) ");
                            if (DeleteFileOrDir(Console.ReadLine()))
                            {
                                Directory.Delete(files[i].fileAddress, true);
                                ShowList.FileInformation(set.sizePage, $"Каталог <{files[i].titleElement}> удалён, включая всё содержимое. Нажмите Enter чтобы продолжить");
                                Console.ReadLine();
                            }
                        }
                        else if (File.Exists(files[i].fileAddress))
                        {
                            ShowList.FileInformation(set.sizePage, "Вы точно хотите удалить этот файл?(yes/no) ");
                            if (DeleteFileOrDir(Console.ReadLine()))
                            {
                                File.Delete(files[i].fileAddress);
                                ShowList.FileInformation(set.sizePage, $"Файл <{files[i].titleElement}> удалён. Нажмите Enter чтобы продолжить");
                                Console.ReadLine();
                            }
                        }
                        newPath = path;
                        break;
                    }
                }
                if (input == $"{set.upDirCommand}")
                {
                    newPath     = UpDir(path);
                    newPageSize = 0;
                    break;
                }
                if (input == $"{set.nextCommand}")
                {
                    if (files.Count > newPageSize + set.sizePage)
                    {
                        newPageSize += set.sizePage;
                        newPath      = path;
                        break;
                    }
                    newPath = path;
                    break;
                }
                if (input == $"{set.backCommand}")
                {
                    if (newPageSize != 0)
                    {
                        newPageSize -= set.sizePage;
                        newPath      = path;
                        break;
                    }
                    newPath = path;
                    break;
                }
                if (disk.Length > 1) // Для перехода на другой диск
                {
                    if (DiskTitle(disk[1]))
                    {
                        if (input == $"{set.openCommand} {disk[1]}:\\")
                        {
                            if (Directory.Exists($"{disk[1]}:\\"))
                            {
                                newPath = $"{disk[1]}:\\";
                            }
                            else
                            {
                                newPath = path;
                            }

                            newPageSize = 0;
                            break;
                        }
                    }
                }
                newPath = path;
            }
        }