Я делаю что-то подобное, но в C ++.Что вам нужно сделать, это прочитать строки по одной за раз и проанализировать их (пролистать слова по одной).У меня есть внешний цикл, который проходит по всем строкам, а внутри это еще один цикл, который проходит по всем словам.Как только нужное вам слово найдено, просто выйдите из цикла и верните счетчик или все, что вы хотите.
Это мой код.Он в основном разбирает все слова и добавляет их в «указатель».Строка, в которой находилось слово, затем добавляется к вектору и используется для ссылки на строку (содержащую имя файла, всю строку и номер строки) из проиндексированных слов.
ifstream txtFile;
txtFile.open(path, ifstream::in);
char line[200];
//if path is valid AND is not already in the list then add it
if(txtFile.is_open() && (find(textFilePaths.begin(), textFilePaths.end(), path) == textFilePaths.end())) //the path is valid
{
//Add the path to the list of file paths
textFilePaths.push_back(path);
int lineNumber = 1;
while(!txtFile.eof())
{
txtFile.getline(line, 200);
Line * ln = new Line(line, path, lineNumber);
lineNumber++;
myList.push_back(ln);
vector<string> words = lineParser(ln);
for(unsigned int i = 0; i < words.size(); i++)
{
index->addWord(words[i], ln);
}
}
result = true;
}