Оптимизация - C# (204598)
Формулировка задачи:
Ребят как можно оптимизировать программу, слишком уж объемная получилась. Аналог Windows dir Program.cs
А то блок схему не могу сделать
Решение задачи: «Оптимизация»
textual
Листинг программы
using System; using System.Text; using System.IO; namespace ConsoleApplication20 { class Program { static void dir(string addr, string atr1, string atr2) { try { string[] d_n = new string[1000]; string[] f_n = new string[1000]; Console.WriteLine("Содержимое папки " + addr); Console.WriteLine(); string[] p = addr.Split(':'); DriveInfo disk = new DriveInfo(p[0]); int katalog = 0; int fil = 0; string sourceDirectory = addr; var Dirs = Directory.EnumerateDirectories(sourceDirectory); int i = 0; foreach (string currentDirectory in Dirs) { katalog = katalog + 1; string dirName = currentDirectory.Substring(sourceDirectory.Length + 1); d_n[i] = File.GetLastWriteTime(currentDirectory) + "\t" + "<DIR>" + "\t" + "\t" + "\t" + dirName; i++; //Console.WriteLine(File.GetLastWriteTime(currentDirectory) + "\t" + "<DIR>" + "\t" + "\t" + "\t" + dirName); } var Files = Directory.EnumerateFiles(sourceDirectory); long sizeAll = 0; int j = 0; foreach (string currentFile in Files) { string fileName = currentFile.Substring(sourceDirectory.Length + 1); fil += 1; System.IO.FileInfo f2 = new System.IO.FileInfo(currentFile); long size = f2.Length; sizeAll += size; f_n[j] = File.GetLastWriteTime(currentFile) + "\t" + "\t" + size.ToString("n0") + "\t" + "\t" + fileName; j++; //Console.WriteLine(File.GetLastWriteTime(currentFile) + "\t" + "\t" + size.ToString("n0") + "\t" + "\t" + fileName); } switch (atr1) { case "/a": switch (atr2) { case "/c": for (int k = 0; k < i; k++) Console.WriteLine(d_n[k]); for (int k = 0; k < j; k++) Console.WriteLine(f_n[k]); break; case "/d": for (int k = i - 1; k >= 0; k--) Console.WriteLine(d_n[k]); for (int k = j - 1; k >= 0; k--) Console.WriteLine(f_n[k]); break; default: for (int k = 0; k < i; k++) Console.WriteLine(d_n[k]); for (int k = 0; k < j; k++) Console.WriteLine(f_n[k]); break; } break; case "/b": switch (atr2) { case "/c": for (int k = 0; k < j; k++) Console.WriteLine(f_n[k]); for (int k = 0; k < i; k++) Console.WriteLine(d_n[k]); break; case "/d": for (int k = j - 1; k >= 0; k--) Console.WriteLine(f_n[k]); for (int k = i - 1; k >= 0; k--) Console.WriteLine(d_n[k]); break; default: for (int k = 0; k < j; k++) Console.WriteLine(f_n[k]); for (int k = 0; k < i; k++) Console.WriteLine(d_n[k]); break; } break; default: switch (atr2) { case "/c": for (int k = 0; k < i; k++) Console.WriteLine(d_n[k]); for (int k = 0; k < j; k++) Console.WriteLine(f_n[k]); break; case "/d": for (int k = i - 1; k >= 0; k--) Console.WriteLine(d_n[k]); for (int k = j - 1; k >= 0; k--) Console.WriteLine(f_n[k]); break; default: for (int k = 0; k < i; k++) Console.WriteLine(d_n[k]); for (int k = 0; k < j; k++) Console.WriteLine(f_n[k]); break; } break; } Console.WriteLine(); Console.WriteLine("\t" + "\t" + fil + " файлов" + "\t" + sizeAll.ToString("n0") + " байт"); Console.WriteLine("\t" + "\t" + katalog + " папок" + "\t" + "\t" + disk.AvailableFreeSpace.ToString("n0") + " байт свободно"); } catch { Console.WriteLine("Неверно введённый адрес!"); Console.WriteLine(""); } } static void Main(string[] args) { while (true) { Console.WriteLine("Укажите путь к файлу с командой dir"); Console.WriteLine("Для вывода справки введите: -?"); { string adr = ""; string a1 = ""; string a2 = ""; bool q = true; while (q) { try { string com = Console.ReadLine(); string[] str = com.Split(' '); switch (str[0]) { case "exit": q = false; break; case "/?": Console.WriteLine(""); Console.WriteLine("Справка:"); Console.WriteLine("\t /? - подсказка"); Console.WriteLine("\t exit - выход"); Console.WriteLine("\t dir - вывод файлов и папок в текущем каталоге"); Console.WriteLine("\t dir <адрес> - вывод файлов и папок в указанном каталоге"); Console.WriteLine("\t \t /a - сначала папки потом файлы"); Console.WriteLine("\t \t /b - сначала файлы потом папки"); Console.WriteLine("\t \t /c - сортировать по алфавиту"); Console.WriteLine("\t \t /d - сортировать по алфавиту в обратном порядке"); Console.WriteLine("\t \t примечание - по умолчанию стоят атрибуты /a /c"); break; case "dir": if (com == "dir") { System.IO.DirectoryInfo di = new System.IO.DirectoryInfo("."); adr = di.FullName; } else { adr = str[1]; } switch (str.Length) { case 2: a1 = "/e"; a2 = "/e"; break; case 3: a1 = str[2]; a2 = "/e"; break; case 4: a1 = str[2]; a2 = str[3]; break; } //dir(@"C:\games"); dir(adr, a1, a2); break; default: Console.WriteLine("Неверная команда! Используйте команду /? для получения справки."); Console.WriteLine(""); break; } } catch { Console.WriteLine("Неверная команда! Используйте команду /? для получения справки."); Console.WriteLine(""); } } } } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д