Lendo arquivos txt

6 respostas
A

Oi pessoal, tudo bem? Eu estive um tempo fora do java, nunca cheguei a sair do básico e agora estou voltando a estudar. Eu queria pedir ajuda para criar um programa que leia um arquivo txt de X linhas(o arquivo sempre será reposto) e que localize nessas X linhas a quantidade de determinadas palavras ou letras. Ao final eu gerarei um arquivo jar para o programa que terá uma interface, nem que seja com apenas um botão para ativar o código e gerar um JOptionPane contento a mensagem "Está concluída a busca".

O que eu havia pensado com o meu tico e teco (corrijam-me se eu estiver errado por favor):

- Será necessária uma estrutura de repetição para cada linha se eu não estou enganado
- Para armazenamento dos valores encontrados será utilizado uma estrutura switch/break para cada valor somado (encontrou o valor então se enquadra no switch com a condição de armazenar +1 ou ++ e voltar para a estrutura de repetição)

por enquanto foi só isso que o tico e o teco pensou hehe.

tentei fazer uns testes de leitura de arquivo, mais s[o de bobeira, e náo consegui de qualquer forma. Aqui est[a o que eu tentei fazer?
import java.io.File;  
import java.io.FileInputStream;  
import java.util.Scanner;  
  
public class Teste {  
    public static void main(String[] args) {  
        try {  
            File file = new File("teste.txt");  
            FileInputStream in = new FileInputStream(file);  
            Scanner scanner = new Scanner(in);  
  
            while (scanner.hasNext()) {  
                String readLine = scanner.next();  
                System.out.println(readLine + " = [" + readLine.substring(0, 2)  
                        + "] é [" + readLine.substring(readLine.length() - 4)  
                        + "]");  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}

não funcionou nem com reza braba, e também nem chega perto de atender o que eu preciso porque eu precisarei fazer a leitura de todos os caracteres e linhas do txt, e vou precisar também fazer um JFrame pra na hora em que eu gerar o jar(que eu sei fazer -- ou pelomenos acho que ainda sei) aparecer a interface.

Quem puder me ajuda eu agradecerei muito, é para amanhã que ele precisa disso, se alguém quiser dar pistas de como fazer eu também vou aqui quebrando a cabeça, mais é que estou mesmo sem direção, não sei como fazer a busca em todas as linhas caracter por caracter e nem como acessar o txt, que eu ainda estou lutando.

Abraços e vlw em advanced.

6 Respostas

T

Para ler um arquivo texto, use FileReader, não Scanner. Exemplo:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;

class TesteArquivoTexto {
    public static void main (String[] args) {
        List<String> listaLinhas = new ArrayList<String>();
        Set<String> conjuntoPalavras = new TreeSet<String>();
        BufferedReader br = null;
        try {
            br = new BufferedReader (new FileReader ("teste.txt"));
            for (String linha = br.readLine(); linha != null; linha = br.readLine()) {
                listaLinhas.add (linha);
                String[] palavras = linha.split ("[^A-Za-z0-9_]+");
                conjuntoPalavras.addAll (Arrays.asList (palavras));
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            if (br != null) try { br.close(); } catch (IOException ex) {}
        }
        System.out.println ("As palavras encontradas no arquivo são:");
        System.out.println (conjuntoPalavras);
        System.out.printf ("O arquivo contém %d linhas%n", listaLinhas.size());
    }

}
A

Obrigado pela resposta thingol

eu fiz da forma como você disse, ao compilar recebo este erro:

java.io.FileNotFoundException: teste.txt (O sistema não pode encontrar o arquivo especificado) As palavras encontradas no arquivo são: at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(FileInputStream.java:106) [] O arquivo contém 0 linhas at java.io.FileInputStream.<init>(FileInputStream.java:66) at java.io.FileReader.<init>(FileReader.java:41) at testes.Teste.main(Teste.java:23)

o arquivo txt tem que estar na mesma pasta onde o .java está não é?
no caso o txt que eu estou utilizando está na mesma pasta do .java, estou fazendo errado?

abraços

A

ah, e outra pergunta, desculpe o abuso, mais para localizar as palavras que eu quero encontrar no texto, como que eu terei que fazer? será pela própria estrutura que eu havia comentado switch/break?

a interface eu já criei e já consigo executar o arquivo, porém, como eu havia dito, aquele erro é o que aparece

lina

Oi,

o caminho está na pasta corrente de sua aplicação?
não deveria passar o caminho em String, ex.: “C:\Temp\teste.txt”

?

Tchauzin!

T

Deve ser; só dei um exemplo mas não dei o programa pronto para você.

A

O thingol, foi mais do que o suficiente a ajuda que vocês me deram, eu já preparei a interface dele e já gerei o jar. Para a exibição eu criei um grid onde me trazia todos os valores que eram pertinentes ao pressionar o botao selecionar. Por meio da estrutura switch/break e já fazia algumas continhas a mais que ele me disse que teria que ser feito. Eu também coloquei o arquivo para ser feito uma busca, assim o arquivo que a minha variavel arquivo recebe é o arquivo que a pessoa quiser.

vlw mesmo gentem!!

Criado 30 de junho de 2009
Ultima resposta 1 de jul. de 2009
Respostas 6
Participantes 3