Exemplo n.º 1
0
        public bool Search_WordInBeginSentence()
        {
            Data begindata = new Data
            {
                Buffer   = "to hello world. SeekOrigin is used the helloby the Seek methodshello of Stream, BufferedStream, FileStream, MemoryStream, BinaryWriter, and other classes.Hello. The Seek methods take an offset parameter that is relative to the position specified by SeekOrigin.",
                Path     = "C:\\MyProject\\SearchSystem\\1232131",
                Position = 0
            };
            List <SearchResult> expectedData = new List <SearchResult>
            {
                new SearchResult {
                    Position = 3, File = new File("C:\\MyProject\\SearchSystem\\1232131")
                },
                new SearchResult {
                    Position = 39, File = new File("C:\\MyProject\\SearchSystem\\1232131")
                },
                new SearchResult {
                    Position = 63, File = new File("C:\\MyProject\\SearchSystem\\1232131")
                }
            };

            var source       = "hello";
            var searchResult = _searcher.Search(begindata, source);

            return(expectedData.SequenceEqual(searchResult));
        }
Exemplo n.º 2
0
        public async Task <List <SearchResult> > Search(string path, bool nesting, string searchText)
        {
            Stopwatch getStopWatch = new Stopwatch();

            var files = _fileManager.GetFiles(path, nesting);

            PrintFindFile.Print(files);
            List <SearchResult> result = new List <SearchResult>();

            foreach (var file in files)
            {
                Data     data;
                FileOpen fileOpen = new FileOpen();
                Stream   stream;
                Data     prevData = null;
                using (var reader = _unityContainer.Resolve <IReader>())
                {
                    stream = fileOpen.Open(file);
                    reader.InitVariables(stream, SizeBufferReader, SizeBufferWritter);
                    while ((data = await reader.ReadAsync()) != null)
                    {
                        data.Path = file.Path;
                        if (prevData != null)
                        {
                            // Добавление конца текста из предыдущего чтения
                            data.Buffer = prevData.Buffer.Substring(prevData.Buffer.Length - (searchText.Length - 1)) + data.Buffer;

                            // Изменение позиции с учетом того что добавлен текст в начало файла
                            data.Position = data.Position - (searchText.Length - 1);
                        }

                        // Поиск подстроки в строке
                        getStopWatch.Start();
                        result.AddRange(_searcherMethod.Search(data, searchText));
                        getStopWatch.Stop();

                        if (prevData == null)
                        {
                            prevData = new Data();
                        }

                        prevData.Buffer = data.Buffer;
                    }
                }
            }

            ResultTime.queryListSearch.Enqueue(getStopWatch.ElapsedMilliseconds);
            return(result);
        }