public static void Main(string[] args) { FileMoving fm = new FileMoving(); //string to = "C:\\Users\\Nic\\Desktop\\Drops"; //string from = "C:\\Users\\Nic\\Desktop\\Holds"; string from = ConfigurationManager.AppSettings["from"].ToString(); string to = ConfigurationManager.AppSettings["to"].ToString(); fm.from = from; fm.to = to; string[] files = Directory.GetFiles(from); fm.fileMove(files); //foreach (string s in files) //{ // System.IO.FileInfo fil = new System.IO.FileInfo(s); // bool check2 = (DateTime.Now - fil.CreationTime).TotalHours < 24; // if (check2 == true) // { // try // { // string ss = Path.GetFileName(s); // string destination = to + "\\" + ss; // File.Copy(s, destination); // Console.WriteLine("Moved " + ss + " to " + destination); // } // catch (IOException ex) // { // Console.WriteLine(ex); // Write error // } // } //} Console.ReadLine(); if (!System.IO.Directory.Exists(to)) { System.IO.Directory.CreateDirectory(to); } }
private static string FileLister3(string currentPath, bool useFiles, string fileFilter) { fileFilter = fileFilter.Replace("*", ""); Console.BackgroundColor = Black; Console.Clear(); Console.Title = "File Explorer"; var currentlyHighlighted = new List <int>(); const ConsoleColor selectedBackground = ConsoleColor.Black; const ConsoleColor selectedForeground = ConsoleColor.Green; const ConsoleColor deSelectedBackground = ConsoleColor.Black; const ConsoleColor deSelectedForegroundFolder = ConsoleColor.White; const ConsoleColor deSelectedForegroundFile = ConsoleColor.Gray; var cut = new List <string>(); int highestIndex; int tableLimit; var pageCount = 1; var startingIndex = 0; var currentIndex = 0; ConsoleKey key; while (true) { //try //{ //Starts the draw time stopwatch var watch = Stopwatch.StartNew(); //Checks if a directory has been set, and if the directory exists. if (!Directory.Exists(currentPath)) { //Resets the console for drawing UI Console.ForegroundColor = deSelectedForegroundFolder; Console.Clear(); Console.SetCursorPosition(0, 0); Console.Write("Current Version: 0.3"); tableLimit = Console.WindowHeight - 4; //Gives us the console position values for writing data. List <int> tableInputAreas = TableMaker.MakeTable(SectionCount.Three, 50, 15); //Makes the table and writes the title. TableMaker.TableTitle("File Explorer"); TableMaker.MakeNavBar( "[Enter - Open Selected Files / Open Folder | Escape - Go Up One Folder]"); //Gets the drives that are attached to the system and that are ready. var driveInfo = DriveInfo.GetDrives(); var sendOffList = new List <string>(); //Checks if the console is large enough to hold all data, choosing the appropriate display manor to use. highestIndex = driveInfo.Count() < tableLimit?driveInfo.Count() : tableLimit; for (int i = 0; i < highestIndex; i++) { //Checks if the said option is the currently selected option from the user, the 'currentIndex' value defaults to 0. if (i == currentIndex) { Console.ForegroundColor = selectedForeground; Console.BackgroundColor = selectedBackground; } else { Console.BackgroundColor = deSelectedBackground; Console.ForegroundColor = deSelectedForegroundFolder; } //Writes the data into the specified locations that were returned when the table was drawn. Console.SetCursorPosition(tableInputAreas[0], 2 + i); Console.Write(driveInfo[i].Name); //Seeing as these are just drives, it doesn't need to check the last modified dates. And defaults to "---" value. Console.SetCursorPosition(tableInputAreas[1], 2 + i); Console.Write("---"); Console.SetCursorPosition(tableInputAreas[2], 2 + i); Console.Write(Directory.GetLastWriteTime(driveInfo[i].Name)); sendOffList.Add(driveInfo[i].Name); } //The entire user interface has been drawn, so it stops the timer and displays the time taken to draw. watch.Stop(); var text = $"Draw Time: {watch.ElapsedMilliseconds}ms"; Console.SetCursorPosition((Console.WindowWidth / 2) - (text.Length / 2), 0); Console.Write(text); var selectionPrompt = true; //Just a while loop. Simple. while (selectionPrompt) { //Reads the user's input. key = Console.ReadKey(true).Key; //Runs that input through a switch to decide what to do with it. switch (key) { case ConsoleKey.Enter: if (!Directory.Exists(driveInfo[currentIndex].Name)) { Dialog.ButtonDialogBox("Error", "An Error has Occurred", DarkRed, MessageBoxButtons.Ok); selectionPrompt = false; continue; } currentPath = driveInfo[currentIndex].Name; currentIndex = 0; selectionPrompt = false; continue; case ConsoleKey.UpArrow: currentIndex = SelectionChange(Black, White, Gray, currentIndex, sendOffList, Direction.Up, tableInputAreas, 2, highestIndex, 0, false, new List <int>()); continue; case ConsoleKey.DownArrow: currentIndex = SelectionChange(Black, White, Gray, currentIndex, sendOffList, Direction.Down, tableInputAreas, 2, highestIndex, 0, false, new List <int>()); continue; case ConsoleKey.Escape: return(null); } } } else { Console.Clear(); Console.ResetColor(); Console.SetCursorPosition(0, 0); Console.Write("Current Version: 0.3"); List <int> tableInputAreas = TableMaker.MakeTable(SectionCount.Four, 50, 20, 20); TableMaker.TableTitle("File Explorer"); var addition = useFiles ? "" : "| Space - Select Folder"; TableMaker.MakeNavBar( $"[Enter - Open Selected Files / Open Folder | Escape - Go Up One Folder | M - Other Commands {addition}]"); tableLimit = Console.WindowHeight - 4; if (_listCurrentPath != currentPath) { var filesInDirectory = Directory.GetFiles(currentPath); var directoriesInDirectory = Directory.GetDirectories(currentPath); _list.Clear(); currentlyHighlighted.Clear(); for (var i = 0; i < directoriesInDirectory.Length; i++) { _list.Add(directoriesInDirectory[i]); } if (useFiles) { for (var i = 0; i < filesInDirectory.Length; i++) { if (filesInDirectory[i].Contains(fileFilter)) { _list.Add(filesInDirectory[i]); } } } _listCurrentPath = currentPath; } highestIndex = _list.Count() - startingIndex < tableLimit ? (_list.Count - startingIndex) : tableLimit; if (_list.Any()) { var selectedCheck = currentIndex - startingIndex; for (var i = 0; i < highestIndex; i++) { var index = i + startingIndex; var fileLastWriteDateAndTime = Directory.GetLastWriteTime(_list[index]); if (i == selectedCheck) { Console.ForegroundColor = selectedForeground; Console.BackgroundColor = selectedBackground; } else { Console.BackgroundColor = deSelectedBackground; if (File.Exists(_list[index])) { Console.ForegroundColor = deSelectedForegroundFile; } else { Console.ForegroundColor = deSelectedForegroundFolder; } } Console.SetCursorPosition(tableInputAreas[0], 2 + i); if (_list[i + startingIndex].Length > tableInputAreas[1] - 3) { Console.Write(_list[i + startingIndex].Substring(0, tableInputAreas[1] - 3)); } else { Console.Write(_list[i + startingIndex]); } Console.CursorLeft = tableInputAreas[1]; if (File.Exists(_list[i + startingIndex])) { Console.Write(new FileInfo(_list[i + startingIndex]).Length); } else { Console.Write("---"); } Console.CursorLeft = tableInputAreas[2]; Console.Write(fileLastWriteDateAndTime); CursorLeft = tableInputAreas[3]; if (File.Exists(_list[i + startingIndex])) { Console.Write(Path.GetExtension(_list[i + startingIndex])); } else { Write("\\"); } } Console.ForegroundColor = Cyan; Console.SetCursorPosition(tableInputAreas[0], 1); Console.Write(currentPath); Console.CursorLeft = tableInputAreas[1]; Console.Write("Size"); Console.CursorLeft = tableInputAreas[2]; Console.Write("Last Write Time"); Console.CursorLeft = tableInputAreas[3]; Write("Type"); Console.ForegroundColor = White; Console.SetCursorPosition(tableInputAreas[2], Console.WindowHeight - 2); Console.Write($"Page: {pageCount}"); } else { Console.SetCursorPosition(tableInputAreas[0], 2); Console.Write("<Empty>"); } watch.Stop(); var text = $"Draw Time: {watch.ElapsedMilliseconds}ms"; Console.SetCursorPosition((Console.WindowWidth / 2) - (text.Length / 2), 0); Console.Write(text); var useMenu = true; while (useMenu) { key = Console.ReadKey(true).Key; switch (key) { case ConsoleKey.Enter: if (useFiles) { if (File.Exists(_list[currentIndex])) { try { return(_list[currentIndex]); } catch (Exception e) { ButtonDialogBox("Error", e.Message, Red, MessageBoxButtons.Ok); useMenu = false; continue; } } } pageCount = 1; currentlyHighlighted.Clear(); currentPath = _list[currentIndex]; startingIndex = 0; currentIndex = 0; useMenu = false; continue; case ConsoleKey.UpArrow: if (currentIndex == startingIndex && currentIndex != 0) { startingIndex = StartingIndex(tableLimit, startingIndex, Direction.Up); pageCount--; useMenu = false; currentIndex--; continue; } currentIndex = SelectionChange(Black, White, Gray, currentIndex, _list, Direction.Up, tableInputAreas, 2, highestIndex, startingIndex, true, currentlyHighlighted); continue; case ConsoleKey.DownArrow: if (currentIndex == startingIndex + tableLimit - 1 && currentIndex != _list.Count - 1) { startingIndex = StartingIndex(tableLimit, startingIndex, Direction.Down); pageCount++; useMenu = false; currentIndex++; continue; } currentIndex = SelectionChange(Black, White, Gray, currentIndex, _list, Direction.Down, tableInputAreas, 2, highestIndex, startingIndex, true, currentlyHighlighted); continue; case ConsoleKey.Escape: var up = Path.GetFullPath(Path.Combine(currentPath, "..\\")); pageCount = 1; startingIndex = 0; currentIndex = 0; if (up == currentPath) { currentPath = null; useMenu = false; currentlyHighlighted.Clear(); continue; } currentlyHighlighted.Clear(); currentPath = up; useMenu = false; continue; case ConsoleKey.M: ButtonDialogBox("Other Commands", "C - Copy Highlighted Files / Folders\nP - Paste Copied Files / Folders\nD - Delete Highlighted Files / Folders\nS - Search For a File in Directory\nX - Highlight File or Folder\nPageDown - Skip One Page Down\nPageUp - Skip One Page Up\n1 - Settings", Blue, MessageBoxButtons.Ok); useMenu = false; continue; case ConsoleKey.PageDown: if (startingIndex + tableLimit > _list.Count) { currentIndex = _list.Count - 1; useMenu = false; continue; } startingIndex = StartingIndex(tableLimit, startingIndex, Direction.Down); currentIndex = startingIndex; useMenu = false; pageCount++; continue; case ConsoleKey.PageUp: if (startingIndex == 0) { currentIndex = 0; useMenu = false; continue; } startingIndex = StartingIndex(tableLimit, startingIndex, Direction.Up); currentIndex = startingIndex; useMenu = false; pageCount--; continue; case ConsoleKey.S: var searchDialog = SearchDialog(_list, currentPath, useFiles); if (useFiles) { if (File.Exists(searchDialog)) { return(searchDialog); } } if (Directory.Exists(searchDialog)) { currentPath = searchDialog; } Console.ForegroundColor = White; Console.BackgroundColor = Black; pageCount = 1; startingIndex = 0; currentIndex = 0; useMenu = false; continue; case ConsoleKey.D: DialogResult result = ButtonDialogBox("Are you Sure?", $"Are you really sure you want to delete all currently highlighted items?", Red, MessageBoxButtons.YesNo); Console.ResetColor(); if (result != DialogResult.Yes) { useMenu = false; continue; } try { if (File.Exists(_list[currentIndex])) { File.Delete(_list[currentIndex]); } else { if (Directory.Exists(_list[currentIndex])) { Directory.Delete(_list[currentIndex], true); } } for (var i = 0; i < currentlyHighlighted.Count; i++) { if (File.Exists(_list[currentlyHighlighted[i]])) { File.Delete(_list[currentlyHighlighted[i]]); } else { if (Directory.Exists(_list[currentlyHighlighted[i]])) { Directory.Delete(_list[currentlyHighlighted[i]], true); } } } useMenu = false; currentIndex = 0; startingIndex = 0; pageCount = 1; continue; } catch (Exception e) { ButtonDialogBox("Error", e.Message, Red, MessageBoxButtons.Ok); useMenu = false; continue; } case ConsoleKey.X: var alreadySelected = false; var sameIndex = 0; for (var i = 0; i < currentlyHighlighted.Count; i++) { if (currentIndex == currentlyHighlighted[i]) { alreadySelected = true; sameIndex = currentlyHighlighted[i]; } } if (alreadySelected) { currentlyHighlighted.Remove(sameIndex); } else { currentlyHighlighted.Add(currentIndex); } continue; case ConsoleKey.C: cut = FileMoving.Copy(currentlyHighlighted, _list, currentIndex, currentPath); break; case ConsoleKey.P: FileMoving.Paste(cut, currentPath); useMenu = false; continue; case ConsoleKey.Spacebar: if (useFiles) { continue; } if (Directory.Exists(_list[currentIndex])) { return(_list[currentIndex]); } break; } } } } }