Busca palavra em arquivo

12 respostas
T

alguem poderia me dar umas dicas de como eu poderia buscar uma palavra em um arquivo?

o user digita uma palavra e o programa mostra quantas vezes a palavra apareceu

12 Respostas

T

Se quiser contar quantas linhas contém uma determinada palavra em um arquivo, o comando é este aqui:

grep -i palavra arquivo | wc -l

requer alguma versão do Unix/Linux, ou então o cygwin ou o UnixUtils (no caso do Windows).

T

eu nao tenho isso que voce falou.. eu so gostaria de saber como faço para achar quantas vezes a palavra esta
fiz algo assim.. mas da problemas na validação do arquivo

import java.util.*;
import java.io.*;

public class dois {

    public static void main (String[] args) 
    {
    	Scanner leitor = new Scanner(System.in);
    	String caminho = "c:\file.txt",palavra ="",aux="";
    	String  info;
    	int i,cont = 0;
    	
    	System.out.printf("\nInforme uma palavra para a busca: ");
    	palavra = leitor.nextLine();
    	
    	try
    	{
    		RandomAccessFile arq = new RandomAccessFile(caminho,"r");
    		
    		for (i = 0; i < arq.length(); i++)
    		{
    			try
    			{
    				info = arq.readLine();
    				aux = info;
    				
    			}
    			catch(Exception ioe)
    			{
    				System.out.printf("\nProblemas aa");
    			}		
    						
    		}
    		arq.close();
    	}
    	catch(Exception ioe)
    	{
    		System.out.printf("\nProblemas a1");
    	}
    		
    		System.out.printf("\nPalavra encontrada %s vez(es): ",aux);
    		System.out.printf("\nPalavra encontrada %d vez(es): ",cont);
    		
    } 
    	
  }
na verdade ele esta sem a busca mas quero ver se pelo menos ele copia para az string auxiliar para fazer a comparação com o equals...porem da problemas com o arq e nao o lê
T

Para ler um arquivo linha por linha, use BufferedReader:

BufferedReader br = null;
try {
    br = new BufferedReader (new FileReader ("arquivo.txt"));
    for (String linha = br.readLine(); linha != null; linha = br.readLine()) {
        // faça alguma coisa com a linha que você leu
    }
} catch (IOException ex) {
    ex.printStackTrace();
} finally {
    try { if (br != null) br.close(); } catch (IOException ex) {}
}
T

o que seria essa variavel br? vc deu um close nela… :s

T

java.io.BufferedReader - veja a documentação, por obséquio.

http://java.sun.com/javase/6/docs/api/java/io/BufferedReader.html

T

blz entendi… no for ele esta lendo linha por linha ate o final do arquivo… que seria null
mas o meu problema é como pegar a palavra para comparar sendo que ele le a linha inteira

T

É o seguinte, amigo: leia o arquivo uma linha de cada vez. Então procure a palavra nessa linha.

Em arquivos-texto, você pode ler o arquivo uma linha de cada vez (que é mais fácil) ou um caracter de cada vez (o que é muito, muito mais lento).

Richard_Mendes_Madur

Uma outra maneira é utilzando expressão regular.
Abaixo segue o código:

public void procuraArquivo() throws Exception{

		BufferedReader b  = new BufferedReader(new FileReader("c:\teste.txt"));

		StringBuffer textoDoArquivo = new StringBuffer();
		String linha = null;
		while((linha = b.readLine()) !=null){
			textoDoArquivo.append(linha);
		}
		
		System.out.print("Digite a letra a ser pesquisada: ");
		String palavra = new Scanner(System.in).next();

		Matcher m = Pattern.compile(palavra).matcher(textoDoArquivo);
		int numeroDeOcorrencias = 0;
		while (m.find()){
			numeroDeOcorrencias++;
		}
		System.out.println("Total de palavras encontradas: " + numeroDeOcorrencias);
		
		b.close();
	}

Espero ter ajudado.

O

Pra que percorrer o arquivo inteiro para lê-lo e jogá-lo numa String só para depois percorrer tudo de novo com regex, se na primeira leitura você já poderia pergunta se tem a palavra procurada na linha?
Dica: dê uma olhada nos métodos da String.

M

Boas Pessoal

Estou com duvidas na leitura de um ficheiro, como faço para ler a determinar de um certo ponto do ficheiro.
exemplo do ficheiro: só quero tirar de lá porto e lisboa.
Pretendo instalar este sistema usando o BufferedReader.

porto lisboa
M

alguem que me possa ajudar please, estou neste momento preso no trabalho por este pormenor

O

Use SAX: http://www.loiane.com/2009/05/manipulando-arquivos-xml-em-java-com-a-api-sax-parte-i/
No final da página tem links pra continuação do tutorial.

Criado 12 de maio de 2009
Ultima resposta 8 de nov. de 2009
Respostas 12
Participantes 5