Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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;
                    }