DaRiYs
14-03-2010, 16:36
Помогите решить такую задачю на C#. Вобщем нужно подсчитать сколько раз встречается заданная строка в какомто файле. Файл нельзя весь грузить в память а только частями или побайтно считывать. Я вроде написал функцию, но проблемма в том что файл читается очень медленно, и поиск не оптимальный. Как решить все это?
while(FileRead.Position<FileRead.Length)
{
bool flag = false;
char ch=Convert.ToChar(FileRead.ReadByte());
if (ch == SearchRequest[0])
{
for (int i = 1; i < SearchRequest.Length &&
FileRead.Position < FileRead.Length; i++)
if (SearchRequest[i] != Convert.ToChar(FileRead.ReadByte()))
{
flag = true;
break;
}
}
else
flag=true;
if(!flag)
CounterFind++;
}
while(FileRead.Position<FileRead.Length)
{
bool flag = false;
char ch=Convert.ToChar(FileRead.ReadByte());
if (ch == SearchRequest[0])
{
for (int i = 1; i < SearchRequest.Length &&
FileRead.Position < FileRead.Length; i++)
if (SearchRequest[i] != Convert.ToChar(FileRead.ReadByte()))
{
flag = true;
break;
}
}
else
flag=true;
if(!flag)
CounterFind++;
}