Exemplo n.º 1
0
        /// <summary>
        /// Функция стандартного поиска
        /// </summary>
        /// <param name="whatToFind">Что искать</param>
        /// <param name="logger">Логгер</param>
        /// <returns></returns>
        public List <Position> findAll(string whatToFind, TestsLogger logger)
        {
            List <Position> Result      = new List <Position>();
            long            LinesAmount = countLines(logger);
            long            LineNumber  = 0;

            // Проходим по целевому файлу
            using (FileStream file1 = new FileStream(_path, FileMode.Open))
            {
                using (StreamReader r = new StreamReader(file1))
                {
                    string line;
                    // Считываем целевой файл построчно
                    while ((line = r.ReadLine()) != null)
                    {
                        // Добавляем в результирующий массив все вхождения искомой строки в текущей строке
                        Result.AddRange(viewLine(LineNumber, line, whatToFind));
                        if (LineNumber % 100000 == 0)
                        {
                            logger.Clear();
                            logger.WriteLine(string.Format("Viewed lines:\t{0}", LineNumber));
                            logger.WriteLine(string.Format("Total lines:\t{0}", LinesAmount));
                        }
                        LineNumber++;
                    }
                }
            }

            return(Result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Посчитаем количество строк в целевом файле
        /// </summary>
        /// <param name="logger"></param>
        /// <returns></returns>
        protected long countLines(TestsLogger logger)
        {
            long Result = 0;

            using (FileStream file1 = new FileStream(_path, FileMode.Open))
            {
                using (StreamReader r = new StreamReader(file1))
                {
                    string line;
                    while ((line = r.ReadLine()) != null)
                    {
                        Result++;
                        if (Result % 100000 == 0)
                        {
                            logger.Clear();
                            logger.WriteLine("Lines counting...");
                            logger.WriteLine(string.Format("Lines amount: {0}", Result));
                        }
                    }
                }
            }
            return(Result);
        }
Exemplo n.º 3
0
 public Tests(string Filename = "../huge_file.txt")
 {
     _Filename = Filename;
     logger    = new TestsLogger();
 }
Exemplo n.º 4
0
 public CachedSearcher(string path, TestsLogger logger, bool asyncCache = false)
 {
     _helper = new TSHelper(path, asyncCache, logger);
 }