Boa Noite,
Estou estudando Manipulação de Arquivos e estou com o seguinte problema:
Preciso criar um programa capaz de ler um arquivo, e mostrar a quantidade de ocorrências de uma determinada Palavra ou Frase fornecida pelo usuário.
Entrei no site da Oracle, e achei o “StringTokenizer” que resolveu meu problema para procurar palavras. Porém, meu programa não funciona para achar uma frase fornecida.
Eu fiz testes, e vi que o IndexOf() tambem não serve (ele não conta mais de uma ocorrência por linha). Alguem conhece alguma forma de eu resolver este problema com frase?
Segue abaixo o que já fiz usando StringTokenizer:
/**
*
* @author Guilherme
*/
import java.io.*;
import java.util.StringTokenizer;
import java.util.Scanner;
public class contarOcorrencias
{
public static void main(String args[])
{
Scanner scan = new Scanner(System.in);
String nomearquivo;
String palavra;
System.out.println("Informe o nome do arquivo: ");
nomearquivo = scan.next();
System.out.println("Informe o que deseja buscar: ");
palavra=scan.next();
int resposta = procura(nomearquivo,palavra);
System.out.println("O total de ocorrencias é: "+resposta);
}
public static int procura(String nomearquivo, String palavra)
{
int achou=0;
String linha;
try
{
BufferedReader in = new BufferedReader(new FileReader(nomearquivo));
while ((linha = in.readLine()) != null)
{
StringTokenizer st = new StringTokenizer(linha);
while (st.hasMoreTokens())
{
if (st.nextToken().contains(palavra))
achou++;
}
}
}
catch (Exception e)
{
System.err.println("Erro na abertura do arquivo " + nomearquivo);
return achou;
}
return achou;
}
}