Pesquisa em TXT

Opa galera td blz?

Tou precisando saber como posso fazer isso!

Pesquisar dentro de um txt e retornar uma linha completa!

Alguem tem umas linhas prontas pra demonstrar? o0

Pesquisa… O que você quer achar?

  • Quero achar uma string fixa, tal como faz o grep (Unix) ou o findstr (Windows)
  • Quero achar uma expressão regular, tal como faz o grep -E (Unix) ou o findstr /R (Windows)
  • Quero varrer 200.000 arquivos-texto e achar uma palavra, como o Google, em 0.1 segundo.

O que você quer?

Segue … espero que te atenda

package br.com.ght.taglib;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class LerTxt {
	
	public static String match(String pattern, String filePath) {
		try {
			FileReader reader = new FileReader(filePath);
			BufferedReader leitor = new BufferedReader(reader);
			String linha = "";
			
			while(true) {
				linha = leitor.readLine();
				if( linha == null ) {
					break;
				}
				if( linha.matches(pattern) ) {
					return linha;
				}
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return "texto não encontrado";
	}
	
	public static void main(String[] args) {
		System.out.println(match("teste", "d:\teste.txt"));
	}
}

{ :smiley: }

E para procurar em vários arquivos?? por exemplo…em vários txt de uma pasta?

O que quero é que tenha como entrada para a busca:

Nome
Data de Nascimento

E de saida venha a linha mas cada valor separadamente!

A sequencia que está no banco de dados(.txt) é essa:
|JOAO ANDRADE DO NASCIMENTO|2907065|060486|1234567|10,0|9,5|9,0|8,5|8,0|7,5|7,0|6,5|6,0|5,5|5,0|4,5|508,18|13|105|

A ‘|’ é usada para… separar na hora de retirar! A data de aniver sario eh o 3º parametro(06/04/86)!

Um exemplo de saida:

Nome:JOAO ANDRADE DO NASCIMENTO
RG:2907065
Data de Aniversario: 060486
Nº de Inscrição: 1234567
Notas: 10,0|9,5|9,0|8,5|8,0|7,5|7,0|6,5|6,0|5,5|5,0|4,5|
508,18|13|105|

Preciso de um codigo que busque especificamente um local tipo:
“Procure 060486 na coluna de Data de aniversario(3º coluna)!”

O codigo que jah foi postado já me deu uma boa base! Mas tou em duvida como faço isso! =/

E deve ser buscado em varios .txts definidos pelo programador(sem o usuario)!

Vlw galera, abraço!

Você pode procurar um driver JDBC que leia arquivos CSV (tá bom, deveriam ter sido separados por “,”, não por “;”) e fazer queries.

[quote=Xniper]O que quero é que tenha como entrada para a busca:

Nome
Data de Nascimento

E de saida venha a linha mas cada valor separadamente!

A sequencia que está no banco de dados(.txt) é essa:
|JOAO ANDRADE DO NASCIMENTO|2907065|060486|1234567|10,0|9,5|9,0|8,5|8,0|7,5|7,0|6,5|6,0|5,5|5,0|4,5|508,18|13|105|

A ‘|’ é usada para… separar na hora de retirar! A data de aniver sario eh o 3º parametro(06/04/86)!

Um exemplo de saida:

Nome:JOAO ANDRADE DO NASCIMENTO
RG:2907065
Data de Aniversario: 060486
Nº de Inscrição: 1234567
Notas: 10,0|9,5|9,0|8,5|8,0|7,5|7,0|6,5|6,0|5,5|5,0|4,5|
508,18|13|105|

Preciso de um codigo que busque especificamente um local tipo:
“Procure 060486 na coluna de Data de aniversario(3º coluna)!”

O codigo que jah foi postado já me deu uma boa base! Mas tou em duvida como faço isso! =/

E deve ser buscado em varios .txts definidos pelo programador(sem o usuario)!

Vlw galera, abraço!
[/quote]

Acho que você vai precisar fazer na mão isso hein???usando charAt…já tentou???cria um metodo que retorna uma string com o valor retirado do txt…vou tentar fazer aqui em casa…e te mando depois… :oops:

É porque meu amigo fez o programa dele com esses parametros, e para não ter que mudar tudo, só quer que adicione uma busca!

E tou querendo sabe só uma coisa! Tem como programar que ele pegue uma linha e faça com que:

Faça uma busca nos .Txts;
Retorne a linha e depois separe ela em pequenas Strings pra passar para cada parametro(Nome,rg,data niver,…);
E depois mostra na tela, bunitinhho! heheh

Abraço, se conseguir posto o codigo!

public static void leitor(InputStream is,OutputStream os) throws IOException
	{
		InputStreamReader reader = new InputStreamReader(is);
		BufferedReader bufreader = new BufferedReader(reader);
		OutputStreamWriter writer = new OutputStreamWriter(os);
		BufferedWriter bufwriter = new BufferedWriter(writer);
		
		String str = null;
		String verificador = bufreader.readLine();
		String c = "|";
		
		int contador = 0;
		//System.out.println(verificador);
		String[] ar = verificador.split(c);	
		for(int x=0;x<ar.length;x++)
		{
			if (!ar[x].equals(null))
			{
				if (ar[x].equals("|") && contador != 5) 
				{
					switch (contador){					
					 	case 0:
					 		bufwriter.write("Nome do fulano: ");
					 		break;
					 	case 1:
					 		bufwriter.newLine();
					 		bufwriter.write("RG: ");
					 		break;
					 	case 2:
					 		bufwriter.newLine();
					 		bufwriter.write("data de nascimento: ");
					 		break;
					 	case 3:
					 		bufwriter.newLine();
					 		bufwriter.write("Numero de inscrição: ");
					 		break;
					 	case 4:
					 		bufwriter.newLine();
					 		bufwriter.write("notas: ");
					 		break;
					}
					
					contador++;
				}	
				else
					str = ar[x];
			        bufwriter.write(str);
			}
		}
		bufwriter.close();
		bufreader.close();
	}

Escrevi Esse código…veja se acha ele útil para com a idéia que tem…
abração :slight_smile: >

Usa StringTokenizer para retirar os dados dos delimitadores. É simples de fazer! Pesquise um pouco e conseguirá!

Desculpa a pergunta de minino msm:

public static void leitor(InputStream is,OutputStream os) throws IOException
 	{
 		InputStreamReader reader = new InputStreamReader(is);
 		BufferedReader bufreader = new BufferedReader(reader);
 		OutputStreamWriter writer = new OutputStreamWriter(os);
 		BufferedWriter bufwriter = new BufferedWriter(writer);

Não conheço bem InputStreamReader e OutputStream!

C pode me dar uma explicaçãozinha! :oops:

Qual a entrada nessa classe? Posso fazer com que sua saida seja escrita em um banco de dados como mysql?

Vlw galera!