static void Zamena(SlkDannie slk, IshodnieDannie isd) { isd = new IshodnieDannie(); StringBuilder isdg; StringBuilder line = new StringBuilder(1000); Console.WriteLine("Введите маску для поиска в тексте"); isd = VvodIshodnihDannih(2); Console.WriteLine("Введите текст для замены в тексте"); isdg = new StringBuilder(Console.ReadLine(), 100); foreach (FileInfo f in slk.flslk) { Console.WriteLine("\nищем в файле [{0}]", f.FullName); line.Clear(); StreamReader rd = new StreamReader(f.FullName, Encoding.Default); while (rd.ReadLine() != null) { line.Append(rd.ReadLine()); } line.Replace(isd.r.ToString(), isdg.ToString()); rd.Close(); StreamWriter wr = new StreamWriter(f.FullName, false, Encoding.Default); wr.WriteLine(line); wr.Close(); } return; }
static SlkDannie SubPoisk(DirectoryInfo indir, StringBuilder path, SlkDannie slk, IshodnieDannie isd) { StringBuilder tpath; foreach (FileInfo f in indir.GetFiles()) if ((isd.date1 < f.LastWriteTime) & (isd.date2 > f.LastWriteTime) & (isd.r.IsMatch(f.Name))) slk.flslk.Add(f); if (indir.GetDirectories().Length != 0) foreach (DirectoryInfo d in indir.GetDirectories())//мы в ввыбраном каталоге indir.GetDirectories()[i] { if ((isd.date1 < d.LastWriteTime) & (isd.date2 > d.LastWriteTime) & (isd.r.IsMatch(d.Name))) slk.dirslk.Add(d); if ((d.GetDirectories().Length > 0) | (d.GetFiles().Length > -1))//если длинна имен подкаталогов больше нуля вызываем рекурсию { tpath = new StringBuilder(50);//пока не придумал как обойти что б путь не перебивался при возврате из рекурсии tpath.Clear().Append(path.ToString()); SubPoisk(d, tpath, slk, isd); } }/**/ return slk; } static void Udalit(SlkDannie slk) { ConsoleKeyInfo hop; Console.WriteLine(@"Варианты действий: -----------------------УДАЛЕНИЕ------------------------------------ 1 - удалить все найденное 2 - удалить указанный файл (каталог) 3 - удалить диапазон файлов (каталогов)."); hop = Console.ReadKey(); Console.WriteLine(" Test1 {0}", hop.Key); switch (int.Parse(hop.Key.ToString().Substring(hop.Key.ToString().Length - 1, 1))) { #region case 1: case 1: { foreach (FileInfo f in slk.flslk) { Console.WriteLine("Delete file [{0}]", f.FullName); f.Delete(); } foreach (DirectoryInfo d in slk.dirslk) { VseUdalit(d); } break; } #endregion #region case 2: case 2: { int strok = 0, kill = -1;//обнуляем выделение что б было вверху do { Console.Clear(); int num = 0;//вывод содержимого папки и подсветка выделенного foreach (DirectoryInfo d in slk.dirslk) { if (kill == num) { Console.WriteLine("Delete:{0}", d); VseUdalit(d); kill = -1; return; } if (strok == num) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; Console.WriteLine("{0,2}. {1}", ++num, d); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; } else Console.WriteLine("{0,2}. {1}", ++num, d); } foreach (FileInfo f in slk.flslk) { if (kill == num) { Console.WriteLine("Delete:{0}", f); f.Delete(); kill = -1; return; } if (strok == num) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.Black; Console.WriteLine("{0,2}. {1}", ++num, f); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; } else Console.WriteLine("{0,2}. {1}", ++num, f); } Console.WriteLine("Выберите дейтсвие\n------------------------------------\n<Вверх>,<Вниз> - перемещение\n<Delete> - удалить <Esc> - выйти вначало"); hop = Console.ReadKey(); if (hop.Key.ToString() == "DownArrow") { strok++; if (strok > num) strok = 0; } else if (hop.Key.ToString() == "UpArrow") { strok--; if (strok < 0) strok = num; } if (hop.Key == ConsoleKey.Escape) break;//-----------------------------------выход if (hop.Key.ToString() == "Delete") kill = strok; } while (true);/**/ break; }