Как уже все предлагали, вы заменяете данные в вашей переменной данных в цикле while, и поскольку цикл выполняется до достижения конца файла, в переменной данных сохраняется только последняя строка, и любая дальнейшая обработка данных даст вам результаты только с последней строки, так что вы можете сделать то, что предложили все остальные, или вы можете попробовать это как альтернативное решение (закройте цикл while после проверки значений индекса):
public void search(String input)
{
int count = 0, fromIndex = 0; //moved outside so that we don't reset it to 0 with every iteration of the loop
try {
scn = new Scanner(this);
String data = "";
while (scn.hasNext()) {
data = scn.nextLine();
//} instead of here
//int count = 0, fromIndex = 0; move these variables outside of the loop
while ((fromIndex = data.indexOf(input, fromIndex)) != -1) {
count++;
fromIndex++;
}
} //close it here
System.out.println("Total occurrences: " + count);
scn.close();
} catch (Exception e) {
System.out.println("Cant find file ");
}
}