Exemple #1
0
        static void Main(string[] args)
        {
            DirectoryInfo root    = new DirectoryInfo(@"C:\Users\acer\Desktop\File");
            Stack <Layer> history = new Stack <Layer>();                       //Creating a Stack/Deque
            FarMode       farMode = FarMode.DirectoryView;

            history.Push(                //filling a stack
                new Layer
            {
                Content = root.GetFileSystemInfos(),
                // SelectedItem = 0
            });

            while (true)                                                     //Loop
            {
                if (farMode == FarMode.DirectoryView)
                {
                    history.Peek().Draw();                                   //Showing files
                }
                ConsoleKeyInfo consoleKeyInfo = Console.ReadKey();
                switch (consoleKeyInfo.Key)
                {
                case ConsoleKey.UpArrow:
                    history.Peek().SelectedItem--;
                    break;

                case ConsoleKey.DownArrow:
                    history.Peek().SelectedItem++;
                    break;

                case ConsoleKey.Enter:
                    int            x = history.Peek().SelectedItem;                    //Goes further to the directory if it is type of directiry
                    FileSystemInfo fileSystemInfo = history.Peek().Content[x];
                    if (fileSystemInfo.GetType() == typeof(DirectoryInfo))
                    {
                        DirectoryInfo d = fileSystemInfo as DirectoryInfo;
                        history.Push(new Layer {
                            Content = d.GetFileSystemInfos(), SelectedItem = 0
                        });
                    }
                    else
                    {
                        farMode = FarMode.FileView;                                                                     //IF it a document
                        using (FileStream fs = new FileStream(fileSystemInfo.FullName, FileMode.Open, FileAccess.Read)) //initializing new class to open txt file
                        {
                            using (StreamReader sr = new StreamReader(fs))
                            {
                                Console.BackgroundColor = ConsoleColor.White;
                                Console.ForegroundColor = ConsoleColor.Black;
                                Console.Clear();
                                Console.WriteLine(sr.ReadToEnd());
                            }
                        }
                    }
                    break;
                }
            }
        }
Exemple #2
0
        public void Process(ConsoleKeyInfo pressedKey)
        {
            switch (pressedKey.Key)
            {
            case ConsoleKey.UpArrow:
                activeLayer.Process(-1);
                break;

            case ConsoleKey.DownArrow:
                activeLayer.Process(1);
                break;

            case ConsoleKey.Enter:
                try
                {
                    Console.Clear();
                    if (activeLayer.items[activeLayer.index].GetType() == typeof(DirectoryInfo))
                    {
                        mode = FarMode.Explorer;
                        layerHistory.Push(activeLayer);
                        activeLayer = new Layer(activeLayer.GetSelectedItemInfo(), 0);
                    }
                    else if (activeLayer.items[activeLayer.index].GetType() == typeof(FileInfo))
                    {
                        mode = FarMode.FileReader;
                    }
                    else if (mode == FarMode.Rename)
                    {
                        activeLayer = layerHistory.Pop();
                    }
                }
                catch (Exception e)
                {
                    activeLayer = layerHistory.Pop();
                }
                break;

            case ConsoleKey.Backspace:
                if (mode == FarMode.Explorer)
                {
                    activeLayer = layerHistory.Pop();
                }
                else if (mode == FarMode.FileReader)
                {
                    mode = FarMode.Explorer;
                }
                break;

            case ConsoleKey.R:
                activeLayer.items[activeLayer.index].Delete();
                layerHistory.Push(activeLayer);
                mode = FarMode.Rename;
                break;

            default:
                break;
            }
        }
Exemple #3
0
        public void Process(ConsoleKeyInfo pressedKey)
        {
            switch (pressedKey.Key)
            {
            case ConsoleKey.UpArrow:
                LastDir.Action(-1);
                break;

            case ConsoleKey.DownArrow:
                LastDir.Action(1);
                break;

            case ConsoleKey.Enter:
                try
                {
                    if (LastDir.elements[LastDir.index].GetType() == typeof(DirectoryInfo))
                    {
                        mode = FarMode.Directory;
                        DirStory.Push(LastDir);
                        LastDir = new Dir(LastDir.GetSelectedElementInfo(), 0);
                    }
                    else if (LastDir.elements[LastDir.index].GetType() == typeof(FileInfo))
                    {
                        mode = FarMode.File;
                    }
                }
                catch (Exception e)
                {
                    LastDir = DirStory.Pop();
                }
                break;

            case ConsoleKey.Backspace:
                if (mode == FarMode.Directory)
                {
                    if (DirStory.Count != 0)
                    {
                        LastDir = DirStory.Pop();
                    }
                    else
                    {
                        Console.Clear();
                        Console.WriteLine("Nothing to see!");
                    }
                }
                else if (mode == FarMode.File)
                {
                    mode = FarMode.Directory;
                }

                break;

            default:
                break;
            }
        }
Exemple #4
0
 static bool PathExists(string path, FarMode mode) // Проверка пути
 {
     if ((mode == FarMode.DirectoryView && new DirectoryInfo(path).Exists) || (mode == FarMode.FileView && new FileInfo(path).Exists))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemple #5
0
        private void DrawRenameWindow()
        {
            Console.BackgroundColor = ConsoleColor.Black;
            Console.ForegroundColor = ConsoleColor.Green;
            Console.Clear();

            int w = -1;

            string        s = current.Rename();
            DirectoryInfo a = current.dirInfo;

            FileSystemInfo[] b = a.GetFileSystemInfos();
            for (int i = 0; i < b.Length; ++i)
            {
                if (b[i].Name == s)
                {
                    w = i;
                }
            }
            mode = FarMode.Explorer;
            Refresh(w);
            Draw();
        }
Exemple #6
0
        static void Main(string[] args)
        {
            DirectoryInfo root    = new DirectoryInfo(@"C:\Users\Nursat\Desktop\test"); //рут - информация о файле или папке
            Stack <Layer> history = new Stack <Layer>();                                //создаю стак
            FarMode       farMode = FarMode.DirectoryView;                              //фармод = дайректори вью

            history.Push(                                                               //добавление в стак
                new Layer                                                               //создание новой переменной типа лэйер
            {
                Content  = root.GetFileSystemInfos(),                                   //контент = все файлы и папки из рут
                Selected = 0                                                            //селектед =0
            }
                );
            while (true)                                           //бесконечный цикл
            {
                if (farMode == FarMode.DirectoryView)              //если фармод = дайректори
                {
                    history.Peek().Draw();                         //вызов функции дроу
                }
                ConsoleKeyInfo consoleKeyInfo = Console.ReadKey(); //бинды
                switch (consoleKeyInfo.Key)                        //свитч кейсы
                {
                case ConsoleKey.UpArrow:                           //1 кейс - апэрроу
                    history.Peek().Selected--;                     //уменьшение селектед на 1
                    break;

                case ConsoleKey.DownArrow:     //2 кейс - даунэрроу
                    history.Peek().Selected++; //увеличение селектед на 1
                    break;

                case ConsoleKey.Enter:                                                         //3 кейс - интер
                    int            i = history.Peek().Selected;                                //ай = селектед
                    FileSystemInfo fileSystemInfo = history.Peek().Content[i];                 //информация о элементе ай контента
                    if (fileSystemInfo.GetType() == typeof(DirectoryInfo))                     //если файлсистем инфо - папка
                    {
                        history.Push(                                                          //добавление в стак
                            new Layer                                                          //создание новой переменной типа лэйер
                        {
                            Content  = (fileSystemInfo as DirectoryInfo).GetFileSystemInfos(), //контент = все файлы и папки из файлсистеминфо
                            Selected = 0                                                       //селектед = 0
                        }
                            );
                    }
                    else                                                                                                // иначе
                    {
                        farMode = FarMode.FileView;                                                                     //фармод = файлвью
                        using (FileStream fs = new FileStream(fileSystemInfo.FullName, FileMode.Open, FileAccess.Read)) //файлстрим для просмотра
                        {
                            using (StreamReader sr = new StreamReader(fs))                                              //стримридер
                            {
                                Console.BackgroundColor = ConsoleColor.White;                                           //фон - белый
                                Console.ForegroundColor = ConsoleColor.Black;                                           //шрифт - черный
                                Console.Clear();                                                                        //очистить консоль
                                Console.WriteLine(sr.ReadToEnd());                                                      //вывод всего текста из файла
                            }
                        }
                    }
                    break;

                case ConsoleKey.Backspace:                            //4 кейс - бэкспэйс
                    if (farMode == FarMode.DirectoryView)             //если фармод = дайректори
                    {
                        history.Pop();                                //удалить последний добавленный
                    }
                    else                                              //иначе
                    {
                        farMode = FarMode.DirectoryView;              //фармод = дайректори
                        Console.ForegroundColor = ConsoleColor.White; //шрифт - белый
                    }
                    break;

                case ConsoleKey.Delete:                                                              //5 кейс = делит
                    int            j   = history.Peek().Selected;                                    //джей = селектед
                    FileSystemInfo fsi = history.Peek().Content[j];                                  //информация о элемента джей контента
                    if (fsi.GetType() == typeof(DirectoryInfo))                                      //если фси = папка
                    {
                        Directory.Delete(fsi.FullName, true);                                        //удалить фси
                        history.Peek().Content = (fsi as DirectoryInfo).Parent.GetFileSystemInfos(); //контент = перент папка фси
                    }
                    else                                                                             //иначе
                    {
                        File.Delete(fsi.FullName);                                                   //удалить фси
                        history.Peek().Content = (fsi as FileInfo).Directory.GetFileSystemInfos();   //контент = папка файла фси
                    }
                    break;

                case ConsoleKey.F9:                                                                   //6 кейс - ф9
                    int            x    = history.Peek().Selected;                                    //икс = селектед
                    FileSystemInfo fsi2 = history.Peek().Content[x];                                  //информация о элементе икс контента
                    Console.BackgroundColor = ConsoleColor.Black;                                     //фон - черный
                    Console.ForegroundColor = ConsoleColor.White;                                     //фон - белый
                    Console.Clear();                                                                  //очистить консоль
                    string rename = Console.ReadLine();                                               //вводим в строку
                    if (fsi2.GetType() == typeof(DirectoryInfo))                                      //если фси2 = папка
                    {
                        string pathOfDir = (fsi2 as DirectoryInfo).Parent.FullName;                   //в стринг хаписываем перент папку
                        string repath    = Path.Combine(pathOfDir, rename);                           //в стринг записываем путь с файлом
                        Directory.Move(fsi2.FullName, repath);                                        //переносим из одного пути в другой
                        history.Peek().Content = (fsi2 as DirectoryInfo).Parent.GetFileSystemInfos(); //контент = перент папка
                    }
                    else                                                                              //иначе
                    {
                        rename = rename + ".txt";                                                     //в строку добавляем тхт
                        string pathOfFile = (fsi2 as FileInfo).Directory.FullName;                    //в строку записываем путь папки файла
                        string repath1    = Path.Combine(pathOfFile, rename);                         //в строку записываем путь с названием файла
                        File.Move(fsi2.FullName, repath1);                                            //переносим из одного пути в другой
                        history.Peek().Content = (fsi2 as FileInfo).Directory.GetFileSystemInfos();   //контент = папка файла
                    }
                    break;
                }
            }
        }
Exemple #7
0
        static void Main(string[] args)
        {
            DirectoryInfo root    = new DirectoryInfo(@"C:\test");
            Stack <Layer> history = new Stack <Layer>();
            FarMode       farMode = FarMode.DirectoryView;

            history.Push(
                new Layer
            {
                Content      = root.GetFileSystemInfos(),
                SelectedItem = 0
            });

            while (true)
            {
                if (farMode == FarMode.DirectoryView)
                {
                    history.Peek().Draw();
                }
                ConsoleKeyInfo consoleKeyInfo = Console.ReadKey();
                switch (consoleKeyInfo.Key)
                {
                case ConsoleKey.UpArrow:
                    history.Peek().SelectedItem--;
                    break;

                case ConsoleKey.DownArrow:
                    history.Peek().SelectedItem++;
                    break;

                case ConsoleKey.Enter:
                    int            x = history.Peek().SelectedItem;
                    FileSystemInfo fileSystemInfo = history.Peek().Content[x];
                    if (fileSystemInfo.GetType() == typeof(DirectoryInfo))
                    {
                        DirectoryInfo d = fileSystemInfo as DirectoryInfo;
                        history.Push(new Layer {
                            Content = d.GetFileSystemInfos(), SelectedItem = 0
                        });
                    }
                    else
                    {
                        farMode = FarMode.FileView;
                        using (FileStream fs = new FileStream(fileSystemInfo.FullName, FileMode.Open, FileAccess.Read))
                        {
                            using (StreamReader sr = new StreamReader(fs))
                            {
                                Console.BackgroundColor = ConsoleColor.White;
                                Console.ForegroundColor = ConsoleColor.Black;
                                Console.Clear();
                                Console.WriteLine(sr.ReadToEnd());
                            }
                        }
                    }
                    break;

                case ConsoleKey.Backspace:
                    if (farMode == FarMode.DirectoryView)
                    {
                        history.Pop();
                    }
                    else if (farMode == FarMode.FileView)
                    {
                        farMode = FarMode.DirectoryView;
                        Console.ForegroundColor = ConsoleColor.White;
                    }
                    break;

                case ConsoleKey.Delete:
                    int            x2 = history.Peek().SelectedItem;
                    FileSystemInfo fileSystemInfo2 = history.Peek().Content[x2];
                    if (fileSystemInfo2.GetType() == typeof(DirectoryInfo))
                    {
                        DirectoryInfo d = fileSystemInfo2 as DirectoryInfo;
                        Directory.Delete(fileSystemInfo2.FullName, true);
                        history.Peek().Content = d.Parent.GetFileSystemInfos();
                    }
                    else
                    {
                        FileInfo f = fileSystemInfo2 as FileInfo;
                        File.Delete(fileSystemInfo2.FullName);
                        history.Peek().Content = f.Directory.GetFileSystemInfos();
                    }
                    history.Peek().SelectedItem--;
                    break;
                }
            }
        }
Exemple #8
0
        static void Main(string[] args)
        {
            DirectoryInfo dir = new DirectoryInfo(@"C:\Users\Yermukhan-Laptop\source\repos\QWERTY"); // Provides class instance methods for creating,
            // move and enumerate in directories and subdirectories. This class is not inherited.
            Stack <Layer> st      = new Stack <Layer>();                                             // Create a new stack
            FarMode       farMode = FarMode.DirectoryView;

            st.Push( // pushing all content from dirInfo;
                new Layer
            {
                Content       = dir.GetFileSystemInfos(),
                SelectedIndex = 0
            });
            while (true) //Cycle works until  is true

            {
                if (farMode == FarMode.DirectoryView)
                {
                    st.Peek().Draw();                              //  paints the first page
                }
                ConsoleKeyInfo consoleKeyInfo = Console.ReadKey(); // reading a key
                switch (consoleKeyInfo.Key)
                {
                case ConsoleKey.UpArrow:
                    st.Peek().SelectedIndex--;
                    break;

                case ConsoleKey.DownArrow:
                    st.Peek().SelectedIndex++;
                    break;

                case ConsoleKey.Enter:
                    int            x = st.Peek().SelectedIndex;
                    FileSystemInfo fileSystemInfo = st.Peek().Content[x];
                    if (fileSystemInfo.GetType() == typeof(DirectoryInfo))
                    {
                        DirectoryInfo d = fileSystemInfo as DirectoryInfo;
                        st.Push(new Layer {
                            Content = d.GetFileSystemInfos(), SelectedIndex = 0
                        });                                                                             // if the folder is added to the stack
                    }
                    else
                    {
                        farMode = FarMode.FileView;
                        using (FileStream fs = new FileStream(fileSystemInfo.FullName, FileMode.Open, FileAccess.Read))
                        {
                            using (StreamReader sr = new StreamReader(fs))     // if the file is read
                            {
                                Console.BackgroundColor = ConsoleColor.Black;
                                Console.ForegroundColor = ConsoleColor.White;
                                Console.Clear();
                                Console.WriteLine(sr.ReadToEnd());
                            }
                        }
                    }
                    break;

                case ConsoleKey.Backspace:
                    if (farMode == FarMode.DirectoryView)
                    {
                        st.Pop();      // if u press backspace, stack pops its element
                    }
                    else if (farMode == FarMode.FileView)
                    {
                        farMode = FarMode.DirectoryView;
                        Console.ForegroundColor = ConsoleColor.White;
                    }
                    break;

                case ConsoleKey.F2:     // to change the name of a folder or file
                    Console.BackgroundColor = ConsoleColor.Black;
                    Console.Clear();
                    string         name            = Console.ReadLine();
                    int            x2              = st.Peek().SelectedIndex;
                    FileSystemInfo fileSystemInfo2 = st.Peek().Content[x2];
                    if (fileSystemInfo2.GetType() == typeof(DirectoryInfo))      // if selected item is dir
                    {
                        DirectoryInfo d2 = fileSystemInfo2 as DirectoryInfo;
                        Directory.Move(fileSystemInfo2.FullName, d2.Parent.FullName + "/" + name);
                        st.Peek().Content = d2.Parent.GetFileSystemInfos();
                    }
                    else
                    {
                        FileInfo fs2 = fileSystemInfo2 as FileInfo;     //  // if selected item is file
                        File.Move(fileSystemInfo2.FullName, fs2.Directory.FullName + "/" + name);
                        st.Peek().Content = fs2.Directory.GetFileSystemInfos();
                    }
                    break;

                case ConsoleKey.Delete:     //to delete a file or folder
                    int            x3 = st.Peek().SelectedIndex;
                    FileSystemInfo fileSystemInfo3 = st.Peek().Content[x3];
                    if (fileSystemInfo3.GetType() == typeof(DirectoryInfo))
                    {
                        DirectoryInfo d3 = fileSystemInfo3 as DirectoryInfo;
                        Directory.Delete(fileSystemInfo3.FullName, true);
                        st.Peek().Content = d3.Parent.GetFileSystemInfos();
                    }
                    else
                    {
                        FileInfo fs3 = fileSystemInfo3 as FileInfo;
                        File.Delete(fileSystemInfo3.FullName);
                        st.Peek().Content = fs3.Directory.GetFileSystemInfos();
                    }
                    st.Peek().SelectedIndex--;
                    break;
                }
            }
        }
Exemple #9
0
        static void Main(string[] args)
        {
            DirectoryInfo root    = new DirectoryInfo(@"C:\Users\ASUS\Desktop\PP2\Week3\Path"); //получаем информацию из нужной папки
            Stack <Layer> history = new Stack <Layer>();                                        //создаем новый пустой стек типа "слой"
            FarMode       farMode = FarMode.DirectoryView;                                      //фармод работает с enum и сейчас переменная равна 1

            history.Push(                                                                       //добавляем в стек новый слой
                new Layer
            {
                Content      = root.GetFileSystemInfos(), //где информация считывается с выбранной директории
                SelectedItem = 0                          //а курсор на 0 - 1 строка
            });

            while (true)                              //здесь слои рисуются до тех пор
            {
                if (farMode == FarMode.DirectoryView) // пока фамод равно 1, то есть мы находимся в папке
                {
                    history.Peek().Draw();
                }

                ConsoleKeyInfo consoleKeyInfo = Console.ReadKey(); //данная переменная считывает определенные горячие клавиши, введенные пользователем

                switch (consoleKeyInfo.Key)                        //позволяет рассматривать несколько вариантов
                {
                case ConsoleKey.UpArrow:                           //стрелка вверх
                    history.Peek().SelectedItem--;                 //берет из стека слой верхний, меняет номер выбранной строки на 1 меньше и рисует новый слой с миней полосой на новом номере строки
                    break;

                case ConsoleKey.DownArrow:
                    history.Peek().SelectedItem++;    //аналогично но номер строки+1
                    break;

                case ConsoleKey.Enter:                                         //вхождение в папку или файл

                    int            x = history.Peek().SelectedItem;            //узнаем номер выбранной строки
                    FileSystemInfo fileSystemInfo = history.Peek().Content[x]; //по номеру строки узнаем инфу выбранной папки или файла

                    if (fileSystemInfo.GetType() == typeof(DirectoryInfo))     //если это папка
                    {
                        DirectoryInfo d = fileSystemInfo as DirectoryInfo;     //используем в дальнейшем только "папковую часть"
                        history.Push(new Layer {
                            Content = d.GetFileSystemInfos(), SelectedItem = 0
                        });                         //создаем новый слой истории, где контент из новоизбранной пользователем папки, а курсор снова на 1 строке
                    }
                    else                            //если это файл
                    {
                        farMode = FarMode.FileView; //фармод теперь равен 0, значит новый слой не рисуется
                        using (FileStream fs = new FileStream(fileSystemInfo.FullName, FileMode.Open, FileAccess.Read))
                        {                           //здесь мы используем файл стрим и стримридер для открытия файла и его чтения)
                            using (StreamReader sr = new StreamReader(fs))
                            {
                                Console.BackgroundColor = ConsoleColor.White; //фон белый
                                Console.ForegroundColor = ConsoleColor.Black; //шрифт черный
                                Console.Clear();                              //всё что было написано до стирается
                                Console.WriteLine(sr.ReadToEnd());            //пишется содержимое стримридера - содержимое файла до конца
                            }
                        }
                    }
                    break;

                case ConsoleKey.Backspace:                            // кнопка "назад"
                    if (farMode == FarMode.DirectoryView)             //если фармод 1, то есть папка
                    {
                        history.Pop();                                //то мы просто убираем верхний слой стека - получаем предыдущий путь
                    }
                    else if (farMode == FarMode.FileView)             //а если мы открыли файл
                    {
                        farMode = FarMode.DirectoryView;              //присваиваем ему значение папки в которой сейчас находимся - отрисовывается история верхнего слоя
                        Console.ForegroundColor = ConsoleColor.White; //меняем цвет шрифта на белый
                    }
                    break;

                case ConsoleKey.Delete:                                            //удаление
                    int            x2 = history.Peek().SelectedItem;               //узнаем номер строки
                    FileSystemInfo fileSystemInfo2 = history.Peek().Content[x2];   //узнаем информацию о файле или папке
                    if (fileSystemInfo2.GetType() == typeof(DirectoryInfo))        //если папка
                    {
                        DirectoryInfo d = fileSystemInfo2 as DirectoryInfo;        //далее используем d как информацию о выбранной папке
                        Directory.Delete(fileSystemInfo2.FullName, true);          //удаляем папку при значении тру чтобы не было exception
                        history.Peek().Content = d.Parent.GetFileSystemInfos();    //отрисовываем новый слой, в котором измененное состояние родительской папки от d
                    }
                    else                                                           //если файл
                    {
                        FileInfo f = fileSystemInfo2 as FileInfo;                  //рассматриваем fileSystemInfo2 как файл
                        File.Delete(fileSystemInfo2.FullName);                     //удаляем
                        history.Peek().Content = f.Directory.GetFileSystemInfos(); //отрисовываем слой, папка в которой находится файл обновлена
                    }
                    history.Peek().SelectedItem--;                                 //курсор сдвигается вверх
                    break;

                case ConsoleKey.Tab:                                             //переименование
                    int            x3 = history.Peek().SelectedItem;             //номер строки
                    FileSystemInfo fileSystemInfo3 = history.Peek().Content[x3]; //информация о файле или папке

                    string firstname  = history.Peek().Content[x3].Name;         //новая строка равна имени файла или папки
                    string secondname = Console.ReadLine();                      //новая строка равна введенной пользователем

                    if (firstname != secondname)
                    {
                        if (fileSystemInfo3.GetType() == typeof(DirectoryInfo))               //если это папка
                        {
                            DirectoryInfo d          = fileSystemInfo3 as DirectoryInfo;      //рассматриваем как папку
                            string        path1      = Path.GetDirectoryName(d.FullName);     //ссылка на путь ДО папки
                            string        extension1 = Path.GetExtension(firstname);          //узнает расширение выбранной папки
                            string        end1       = path1 + '/' + secondname + extension1; //создает новый путь к новоименованной папке
                            Directory.Move(d.FullName, @end1);                                //перемещает=переименовывает
                            history.Peek().Content = d.Parent.GetFileSystemInfos();           //отрисовывает обновленный вариант
                        }

                        else                                                           //если файл
                        {
                            FileInfo f         = fileSystemInfo3 as FileInfo;          //рассматриваем как файл
                            string   path      = f.DirectoryName;                      //создаем строку-ссылку на файл(без имени файла в конце)
                            string   extension = Path.GetExtension(firstname);         //узнает расширение выбранного файла
                            string   end       = path + '/' + secondname + extension;  //создает путь до новоименнованного файла
                            File.Move(f.FullName, @end);                               //переименовывание
                            history.Peek().Content = f.Directory.GetFileSystemInfos(); //отрисовывает обновление
                        }
                    }
                    else
                    {
                    }
                    break;

                case ConsoleKey.Escape:
                    int            x4 = history.Peek().SelectedItem;//номер строки
                    FileSystemInfo fileSystemInfo4 = history.Peek().Content[x4];
                    FileInfo       p            = fileSystemInfo4 as FileInfo;
                    string         sourcefolder = p.Directory.FullName;
                    string         targetfolder = @"C:\Users\ASUS\Desktop\PP2\Week3\Path\Папка\Папка 2";

                    string t = Path.Combine(sourcefolder, p.Name);
                    string k = Path.Combine(targetfolder, p.Name);

                    File.Copy(t, k);

                    break;
                }
            }
        }
Exemple #10
0
        static void Main(string[] args)
        {
            DirectoryInfo link    = new DirectoryInfo(@"C:\Users\Nurayim\Desktop\KBTU"); // ссылка на папку
            Stack <Layer> history = new Stack <Layer>();                                 // создаем стэк, где будем хранить список
            FarMode       mode    = FarMode.dir;                                         // приравниваем тип папке

            history.Push(new Layer
            {
                FSI   = link.GetFileSystemInfos(),             // через функцию гетфайлсистеминфос достаем содержание папки
                Index = 0                                      // приравниваем индекс нулю, то есть курсор начинается с нулевого элемента
            });
            while (true)                                       // создаем бесконечный цикл
            {
                if (mode == FarMode.dir)                       // если тип равен папке
                {
                    history.Peek().Draw();                     // то вызываем метод
                }
                ConsoleKeyInfo consoleKey = Console.ReadKey(); // функция, где хранится информация о клавишах
                switch (consoleKey.Key)
                {
                case ConsoleKey.UpArrow:     // если мы нажимаем на этот клавиш, то индекс уменьшается
                    history.Peek().Index--;
                    break;

                case ConsoleKey.DownArrow:     // индекс прибавляется
                    history.Peek().Index++;
                    break;

                case ConsoleKey.Enter:
                    int            x1 = history.Peek().Index;               // создаем переменную, которая будет служить в роле индекса
                    FileSystemInfo fileSystemInfo1 = history.Peek().FSI[x1];
                    if (fileSystemInfo1.GetType() == typeof(DirectoryInfo)) // определяем тип
                    {
                        DirectoryInfo d = fileSystemInfo1 as DirectoryInfo;
                        history.Push(new Layer {
                            FSI = d.GetFileSystemInfos(), Index = 0
                        });                                                                      // если это папка, то открываем папку, достаем новый чписокб и приравниваем индекс нулю
                    }
                    else
                    {
                        mode = FarMode.file;
                        using (FileStream fs = new FileStream(fileSystemInfo1.FullName, FileMode.Open, FileAccess.Read))     // если это файл, то открываем файл и показываем содержание файла
                        {
                            using (StreamReader sr = new StreamReader(fs))
                            {
                                Console.BackgroundColor = ConsoleColor.White;
                                Console.ForegroundColor = ConsoleColor.Black;
                                Console.Clear();
                                Console.WriteLine(sr.ReadToEnd());
                            }
                        }
                    }
                    break;

                case ConsoleKey.Backspace:
                    if (mode == FarMode.dir)     // если это папка, то удаляем через поп последнее окно
                    {
                        history.Pop();
                    }
                    else if (mode == FarMode.file)
                    {
                        mode = FarMode.dir;
                        Console.ForegroundColor = ConsoleColor.White;
                    }
                    break;

                case ConsoleKey.Delete:
                    int            x2 = history.Peek().Index;
                    FileSystemInfo fileSystemInfo2 = history.Peek().FSI[x2];
                    if (fileSystemInfo2.GetType() == typeof(DirectoryInfo))     // если это папка, то удаляем через булевую функцию тру, то есть соглашаемся удалению содержания папки
                    {
                        DirectoryInfo d = fileSystemInfo2 as DirectoryInfo;
                        Directory.Delete(fileSystemInfo2.FullName, true);
                        history.Peek().FSI = d.Parent.GetFileSystemInfos();
                    }
                    else
                    {
                        FileInfo f = fileSystemInfo2 as FileInfo;     // если это файл, то просто удаляем файл и возвращаем обновленный список
                        File.Delete(fileSystemInfo2.FullName);
                        history.Peek().FSI = f.Directory.GetFileSystemInfos();
                    }
                    history.Peek().Index--;     // при удвлении индекс уменьшается
                    break;

                case ConsoleKey.F2:
                    Console.BackgroundColor = ConsoleColor.Black;
                    Console.Clear();
                    string         name            = Console.ReadLine(); // создаем строкуб где будем писать новое имя
                    int            x3              = history.Peek().Index;
                    FileSystemInfo fileSystemInfo3 = history.Peek().FSI[x3];
                    if (fileSystemInfo3.GetType() == typeof(DirectoryInfo))     // определяем тип
                    {
                        DirectoryInfo directoryInfo = fileSystemInfo3 as DirectoryInfo;
                        Directory.Move(fileSystemInfo3.FullName, directoryInfo.Parent + "/" + name);     // если это папка, то меняем имя через функцию парент
                        history.Peek().FSI = directoryInfo.Parent.GetFileSystemInfos();
                    }
                    else
                    {
                        FileInfo fileInfo = fileSystemInfo3 as FileInfo;
                        File.Move(fileSystemInfo3.FullName, fileInfo.Directory.FullName + "/" + name);     // если файл, то через дайректори фулл нэйм
                        history.Peek().FSI = fileInfo.Directory.GetFileSystemInfos();
                    }
                    break;
                }
            }
        }
Exemple #11
0
        static void Main(string[] args)
        {
            DirectoryInfo root    = new DirectoryInfo(@"D:\test");
            Stack <Layer> history = new Stack <Layer>();
            FarMode       farMode = FarMode.DirectoryView;

            history.Push(
                new Layer
            {
                Content      = root.GetFileSystemInfos(),
                SelectedItem = 0
            });
            int    a   = 0;
            string gfh = Convert.ToString(root);

            while (a == 0)
            {
                if (farMode == FarMode.DirectoryView)
                {
                    history.Peek().Draw();
                }

                ConsoleKeyInfo consoleKeyInfo = Console.ReadKey();
                switch (consoleKeyInfo.Key)
                {
                case ConsoleKey.UpArrow:
                    history.Peek().SelectedItem--;
                    break;

                case ConsoleKey.DownArrow:
                    history.Peek().SelectedItem++;
                    break;

                case ConsoleKey.Enter:
                    int            x = history.Peek().SelectedItem;
                    FileSystemInfo fileSystemInfo = history.Peek().Content[x];
                    if (fileSystemInfo.GetType() == typeof(DirectoryInfo))
                    {
                        DirectoryInfo d = fileSystemInfo as DirectoryInfo;
                        history.Push(new Layer {
                            Content = d.GetFileSystemInfos(), SelectedItem = 0
                        });
                    }
                    else
                    {
                        farMode = FarMode.FileView;
                        using (FileStream fs = new FileStream(fileSystemInfo.FullName, FileMode.Open, FileAccess.Read))
                        {
                            using (StreamReader sr = new StreamReader(fs))
                            {
                                Console.BackgroundColor = ConsoleColor.White;
                                Console.ForegroundColor = ConsoleColor.Black;
                                Console.Clear();
                                Console.WriteLine(sr.ReadToEnd());
                            }
                        }
                    }
                    break;

                case ConsoleKey.Backspace:
                    if (farMode == FarMode.DirectoryView)
                    {
                        history.Pop();
                    }
                    else if (farMode == FarMode.FileView)
                    {
                        farMode = FarMode.DirectoryView;
                        Console.ForegroundColor = ConsoleColor.White;
                    }
                    break;

                case ConsoleKey.Delete:
                    int            x2 = history.Peek().SelectedItem;
                    FileSystemInfo fileSystemInfo2 = history.Peek().Content[x2];
                    if (fileSystemInfo2.GetType() == typeof(DirectoryInfo))
                    {
                        DirectoryInfo d = fileSystemInfo2 as DirectoryInfo;
                        Directory.Delete(fileSystemInfo2.FullName, true);
                        history.Peek().Content = d.Parent.GetFileSystemInfos();
                    }
                    else
                    {
                        FileInfo f = fileSystemInfo2 as FileInfo;
                        File.Delete(fileSystemInfo2.FullName);
                        history.Peek().Content = f.Directory.GetFileSystemInfos();
                    }
                    history.Peek().SelectedItem--;
                    break;

                case ConsoleKey.R:
                    int            x3 = history.Peek().SelectedItem;
                    FileSystemInfo fileSystemInfo3 = history.Peek().Content[x3];
                    //string o = fileSystemInfo3.Name.ToString();
                    Console.Clear();
                    string ttt = Console.ReadLine();
                    if (fileSystemInfo3.GetType() == typeof(DirectoryInfo))
                    {
                        DirectoryInfo dfd = fileSystemInfo3 as DirectoryInfo;
                        Console.Clear();

                        try
                        {
                            dfd.MoveTo(Path.Combine(dfd.Parent.FullName, ttt));
                            history.Peek().Content = dfd.Parent.GetFileSystemInfos();
                        }
                        catch
                        {
                            Console.Write("this name already exists, try again");
                        }
                    }
                    else
                    {
                        ttt = ttt + ".txt";
                        FileInfo ddd = fileSystemInfo3 as FileInfo;
                        try
                        {
                            File.Move(fileSystemInfo3.FullName, fileSystemInfo3.FullName.Replace(fileSystemInfo3.Name, ttt));
                        }
                        catch
                        {
                            Console.Write("this name already exists, try again");
                        }
                        history.Peek().Content = ddd.Directory.GetFileSystemInfos();
                    }
                    break;

                case ConsoleKey.Escape:
                    a = 1;
                    break;
                }
            }
        }
Exemple #12
0
        static void Main(string[] args)
        {
            DirectoryInfo root    = new DirectoryInfo(@"C:\Users\Akbar\Desktop\test");
            Stack <Layer> history = new Stack <Layer>();
            FarMode       farMode = FarMode.DirectoryView;

            history.Push(
                new Layer
            {
                Content  = root.GetFileSystemInfos(),
                Selected = 0
            }
                );
            while (true)
            {
                if (farMode == FarMode.DirectoryView)
                {
                    history.Peek().Draw();
                }
                ConsoleKeyInfo consoleKeyInfo = Console.ReadKey();
                switch (consoleKeyInfo.Key)
                {
                case ConsoleKey.UpArrow:
                    history.Peek().Selected--;
                    break;

                case ConsoleKey.DownArrow:
                    history.Peek().Selected++;
                    break;

                case ConsoleKey.Enter:
                    int            i = history.Peek().Selected;
                    FileSystemInfo fileSystemInfo = history.Peek().Content[i];
                    if (fileSystemInfo.GetType() == typeof(DirectoryInfo))
                    {
                        history.Push(
                            new Layer
                        {
                            Content  = (fileSystemInfo as DirectoryInfo).GetFileSystemInfos(),
                            Selected = 0
                        }
                            );
                    }
                    else
                    {
                        farMode = FarMode.FileView;
                        using (FileStream fs = new FileStream(fileSystemInfo.FullName, FileMode.Open, FileAccess.Read))
                        {
                            using (StreamReader sr = new StreamReader(fs))
                            {
                                Console.BackgroundColor = ConsoleColor.White;
                                Console.ForegroundColor = ConsoleColor.Black;
                                Console.Clear();
                                Console.WriteLine(sr.ReadToEnd());
                            }
                        }
                    }
                    break;

                case ConsoleKey.Backspace:
                    if (farMode == FarMode.DirectoryView)
                    {
                        history.Pop();
                    }
                    else
                    {
                        farMode = FarMode.DirectoryView;
                        Console.ForegroundColor = ConsoleColor.White;
                    }
                    break;

                case ConsoleKey.Delete:
                    int            j   = history.Peek().Selected;
                    FileSystemInfo fsi = history.Peek().Content[j];
                    if (fsi.GetType() == typeof(DirectoryInfo))
                    {
                        Directory.Delete(fsi.FullName, true);
                        history.Peek().Content = (fsi as DirectoryInfo).Parent.GetFileSystemInfos();
                    }
                    else
                    {
                        File.Delete(fsi.FullName);
                        history.Peek().Content = (fsi as FileInfo).Directory.GetFileSystemInfos();
                    }
                    break;

                case ConsoleKey.F9:
                    int            x    = history.Peek().Selected;
                    FileSystemInfo fsi2 = history.Peek().Content[x];
                    Console.BackgroundColor = ConsoleColor.Black;
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.Clear();
                    string rename = Console.ReadLine();
                    if (fsi2.GetType() == typeof(DirectoryInfo))
                    {
                        string pathOfDir = (fsi2 as DirectoryInfo).Parent.FullName;
                        string repath    = Path.Combine(pathOfDir, rename);
                        Directory.Move(fsi2.FullName, repath);
                        history.Peek().Content = (fsi2 as DirectoryInfo).Parent.GetFileSystemInfos();
                    }
                    else
                    {
                        rename = rename + ".txt";
                        string pathOfFile = (fsi2 as FileInfo).Directory.FullName;
                        string repath1    = Path.Combine(pathOfFile, rename);
                        File.Move(fsi2.FullName, repath1);
                        history.Peek().Content = (fsi2 as FileInfo).Directory.GetFileSystemInfos();
                    }
                    break;
                }
            }
        }
Exemple #13
0
        public void Process(ConsoleKeyInfo pressed)
        {
            switch (pressed.Key)
            {
            case ConsoleKey.UpArrow:       //ind up
                if (mode == FarMode.Explorer)
                {
                    Shift(-1);
                    DrawStatus();
                    ShiftCursor();
                }
                break;

            case ConsoleKey.DownArrow:     //ind down
                if (mode == FarMode.Explorer)
                {
                    Shift(1);
                    DrawStatus();
                    ShiftCursor();
                }
                break;

            case ConsoleKey.Enter:
                if (mode == FarMode.Explorer)
                {
                    try
                    {
                        if (current.items[current.ind].GetType() == typeof(DirectoryInfo))     //open directory
                        {
                            mode = FarMode.Explorer;
                            History.Push(current);
                            current = new Layer(current.GetSelectedItemInfo(), 0);
                            Draw();
                        }
                        else                                                                   //open file
                        {
                            mode = FarMode.FileReader;
                            Draw();
                        }
                    }
                    catch (Exception e)
                    {
                        current = History.Pop();
                        Draw();
                    }
                }
                break;

            case ConsoleKey.Backspace:
                if (mode == FarMode.Explorer)
                {
                    current = History.Pop();
                    Draw();                                                       //back to directory
                }
                else
                {
                    mode = FarMode.Explorer;
                    Draw();
                }                                                                       //back to directory from file
                break;

            case ConsoleKey.R:
                mode = FarMode.Rename;
                Draw();
                break;
            }
        }
Exemple #14
0
        static void Main(string[] args)
        {
            DirectoryInfo root    = new DirectoryInfo(@"D:\WEEK2"); //Присваиваю путь
            Stack <Layer> history = new Stack <Layer>();
            FarMode       farMode = FarMode.DirectoryView;

            history.Push(
                new Layer
            {
                Content      = root.GetFileSystemInfos(),    // Делаю экземпляр в котором аргумент Content and FarMode
                SelectedItem = 0
            });

            while (true)
            {
                if (farMode == FarMode.DirectoryView)
                {
                    history.Peek().Draw();     // Вызываю функцию
                }
                ConsoleKeyInfo consoleKeyInfo = Console.ReadKey();
                switch (consoleKeyInfo.Key)
                {
                case ConsoleKey.F2:
                    Console.BackgroundColor = ConsoleColor.Black;
                    Console.Clear();
                    string         name            = Console.ReadLine();
                    int            x3              = history.Peek().SelectedItem;
                    FileSystemInfo fileSystemInfo3 = history.Peek().Content[x3];
                    if (fileSystemInfo3.GetType() == typeof(DirectoryInfo))
                    {
                        DirectoryInfo directoryInfo = fileSystemInfo3 as DirectoryInfo;
                        Directory.Move(fileSystemInfo3.FullName, directoryInfo.Parent + "/" + name);
                        history.Peek().Content = directoryInfo.Parent.GetFileSystemInfos();
                    }
                    else
                    {
                        FileInfo fileInfo = fileSystemInfo3 as FileInfo;
                        File.Move(fileSystemInfo3.FullName, fileInfo.Directory.FullName + "/" + name);
                        history.Peek().Content = fileInfo.Directory.GetFileSystemInfos();
                    }

                    break;

                case ConsoleKey.Delete:
                    int            x2 = history.Peek().SelectedItem;
                    FileSystemInfo fileSystemInfo2 = history.Peek().Content[x2];
                    history.Peek().SelectedItem--;
                    if (fileSystemInfo2.GetType() == typeof(DirectoryInfo))
                    {
                        DirectoryInfo directoryInfo = fileSystemInfo2 as DirectoryInfo;
                        Directory.Delete(fileSystemInfo2.FullName, true);
                        history.Peek().Content = directoryInfo.Parent.GetFileSystemInfos();
                    }
                    else
                    {
                        FileInfo fileInfo = fileSystemInfo2 as FileInfo;
                        File.Delete(fileSystemInfo2.FullName);
                        history.Peek().Content = fileInfo.Directory.GetFileSystemInfos();
                    }

                    // Результаты нажатых кнопок
                    break;

                case ConsoleKey.UpArrow:
                    history.Peek().SelectedItem--;
                    break;

                case ConsoleKey.DownArrow:
                    history.Peek().SelectedItem++;
                    break;

                case ConsoleKey.Enter:
                    int            x = history.Peek().SelectedItem;
                    FileSystemInfo fileSystemInfo = history.Peek().Content[x];
                    if (fileSystemInfo.GetType() == typeof(DirectoryInfo))
                    {
                        DirectoryInfo d = fileSystemInfo as DirectoryInfo;                // Если это папка, показываю содержимое
                        history.Push(new Layer {
                            Content = d.GetFileSystemInfos(), SelectedItem = 0
                        });
                    }
                    else
                    {
                        farMode = FarMode.FileView;
                        using (FileStream fs = new FileStream(fileSystemInfo.FullName, FileMode.Open, FileAccess.Read))
                        {
                            using (StreamReader sr = new StreamReader(fs))
                            {
                                Console.BackgroundColor = ConsoleColor.White;
                                Console.ForegroundColor = ConsoleColor.Black;               // если это файл также показываю содержимое
                                Console.Clear();
                                Console.WriteLine(sr.ReadToEnd());
                            }
                        }
                    }
                    break;

                case ConsoleKey.Backspace:
                    if (farMode == FarMode.DirectoryView)
                    {
                        history.Pop();
                    }
                    else if (farMode == FarMode.FileView)
                    {
                        farMode = FarMode.DirectoryView;
                        Console.ForegroundColor = ConsoleColor.White;
                    }
                    break;
                }
            }
        }
Exemple #15
0
        static void Main(string[] args)
        {
            /* Title - заголовок консоли
             * history - стэк вложенных папок
             * mode - текущее состояние системы
             * root - путь к начальной папке
             */
            Console.Title = "Far Manager";
            Stack <Layer> history = new Stack <Layer>();
            FarMode       mode    = FarMode.DIR;
            DirectoryInfo root    = new DirectoryInfo(@"D:\");
            bool          run     = true;

            //в history засовываем папку root.
            history.Push(
                new Layer
            {
                Directories  = root.GetDirectories().ToList(),
                Files        = root.GetFiles().ToList(),
                SelectedItem = 0
            });

            //цикл программы
            while (run)
            {
                //автоматически обновлять интерфейс после каждого нажатия клавиши
                if (mode == FarMode.DIR)
                {
                    history.Peek().Draw();
                }
                //ввод клавиши с клавиатуры и дальнейшие действия с ними
                ConsoleKeyInfo consoleKeyInfo = Console.ReadKey();
                switch (consoleKeyInfo.Key)
                {
                //на delete удалить файл
                case ConsoleKey.Delete:
                    history.Peek().DeleteSelectedItem();
                    break;

                //на вверх листать папки наверх
                case ConsoleKey.UpArrow:
                    history.Peek().SelectedItem--;
                    break;

                //на вниз - листать вниз
                case ConsoleKey.DownArrow:
                    history.Peek().SelectedItem++;
                    break;

                //на backspace - вернуться в прошлую папку, или закрыть файл
                case ConsoleKey.Backspace:
                    if (history.Count == 1)
                    {
                        break;
                    }

                    if (mode == FarMode.DIR)
                    {
                        history.Pop();
                    }
                    else
                    {
                        mode = FarMode.DIR;
                        Console.ForegroundColor = ConsoleColor.White;
                    }
                    break;

                //на enter - открыть папку или файл
                case ConsoleKey.Enter:
                    int x = history.Peek().SelectedItem;

                    if (x < history.Peek().Directories.Count)
                    {
                        DirectoryInfo fileSystemInfo = history.Peek().Directories[x];

                        DirectoryInfo directoryInfo = fileSystemInfo as DirectoryInfo;
                        history.Push(
                            new Layer
                        {
                            Directories  = directoryInfo.GetDirectories().ToList(),
                            Files        = directoryInfo.GetFiles().ToList(),
                            SelectedItem = 0
                        });
                    }
                    else
                    {
                        mode = FarMode.FILE;
                        FileInfo fileInfo = history.Peek().Files[x - history.Peek().Directories.Count];
                        Console.BackgroundColor = ConsoleColor.White;
                        Console.Clear();
                        Console.ForegroundColor = ConsoleColor.Black;
                        using (StreamReader sr = new StreamReader(fileInfo.FullName))
                        {
                            Console.WriteLine(sr.ReadToEnd());
                        }
                    }
                    break;

                //на escape завершить выполнение программы
                case ConsoleKey.Escape:
                    run = false;
                    break;

                //на R переименовать файл или папку
                case ConsoleKey.R:
                    string parentpath;
                    Console.BackgroundColor = ConsoleColor.Black;
                    int a = history.Peek().SelectedItem;
                    Console.Clear();
                    Console.Write("Введите новое имя файла: ");
                    string txt = Console.ReadLine();
                    if (a < history.Peek().Directories.Count)
                    {
                        parentpath = history.Peek().Directories[a].Parent.FullName;
                        if (txt != history.Peek().Directories[a].Name)
                        {
                            Directory.Move(history.Peek().Directories[a].FullName, Path.Combine(parentpath, txt));
                            DirectoryInfo df           = new DirectoryInfo(parentpath);
                            history.Peek().Directories = df.EnumerateDirectories().ToList();
                        }
                    }
                    else
                    {
                        parentpath = history.Peek().Files[a - history.Peek().Directories.Count].FullName.Remove(history.Peek().Files[a - history.Peek().Directories.Count].FullName.Length - history.Peek().Files[a - history.Peek().Directories.Count].Name.Length);
                        if (txt != history.Peek().Files[a - history.Peek().Directories.Count].Name)
                        {
                            File.Copy(history.Peek().Files[a - history.Peek().Directories.Count].FullName, Path.Combine(parentpath, txt));
                            File.Delete(history.Peek().Files[a - history.Peek().Directories.Count].FullName);
                            DirectoryInfo df     = new DirectoryInfo(parentpath);
                            history.Peek().Files = df.EnumerateFiles().ToList();
                        }
                    }
                    break;
                }
            }
        }