Lendou um arquivo qualquer e exibindo linha, caracteres e seu conteúdo

4 respostas
P

1 - Queria fazer o código usando um JOptionPane se possivel ou outro componente gráfico
2 - Escolher o arquivo em uma arvore de diretorios
3 - Não consegui contar quantas palavras
4 - Não consegui contar quantos caracteres tinha no arquivo

Se alguém puder me ajudar desde já agradesso sou iniciante e não seu criar muita coisa em java

import java.io.*;

public class leArquivo {

public static void main(String args[]) throws Exception

{
BufferedReader arquivo = new BufferedReader(new java.io.FileReader(“arquivo.txt”));

String linha= ""; 

  int numeroCaracteres = 0; 
  int totalPalavras = 0;
  
  while (arquivo.ready()) 
  { 
     try 
     { 
linha+=arquivo.readLine(); 
totalPalavras += linha.length();
numeroCaracteres += linha.length(); 
     } 

     catch (Exception ex) 

      { 

ex.printStackTrace(); 

      } 
	
  System.out.println( "Strings concatenadas do arquivo: "+ linha );
  System.out.println( "Total de palavras do arquivo: " + totalPalavras );
  System.out.println( "Total de caracteres do arquivo : " +   numeroCaracteres );
     }

}
}

4 Respostas

LPJava

queria que vc dese uma lida nessa aula:

http://www.guj.com.br/posts/list/50115.java

flw :smiley:

ViniGodoy

Primeiramente, seja bem-vindo ao GUJ!
Dá uma lida no tópico que o Camilo falou! :wink:

Bem, vamos ao seu programa.

Já dá para notar algo muito errado. Se o número de palavras é diferente do número de caracteres, por que você está fazendo a mesma soma?

totalPalavras += linha.length();
numeroCaracteres += linha.length();

Esses dois certamente darão o mesmo resultado.

Para escolher um arquivo, use um JFileChooser.

Finalmente, acostume-se com a convenção! Nomes de classe com a primeira letra maiúscula! :slight_smile:

ViniGodoy

Aqui está o seu código corrigido e comentado.

Para o seu próprio bem, entenda, não só copie, ok?

Note que seu algoritmo estava praticamente certo. Eu comentei os locais onde alterei o código e o porque da alteração.

Embora o tamanho do código assuste, ele está praticamente igual ao seu. Só os comentários e os imports deixaram ele tão grande. ;)

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

public class LeArquivo {
    public static void main(String args[]) throws Exception {
        //Primeiramente, vamos usar o JFileChooser para escolher o arquivo
        JFileChooser fileChooser = new JFileChooser();        
        if (fileChooser.showOpenDialog(null) == JFileChooser.CANCEL_OPTION) {
            System.exit(0);
        }
        
        File file = fileChooser.getSelectedFile();
        
        //Agora faremos a leitura do arquivo
        BufferedReader arquivo = new BufferedReader(new FileReader(file));
        
        String linha = "";

        int numeroCaracteres = 0;
        int totalPalavras = 0;
        int totalLinhas = 0;

        while (arquivo.ready()) {
            //Lemos a linha. 
            //Como só nos interessa contar a linha atual, 
            //usamos o operador = ao invés de +=. 
            linha = arquivo.readLine();
            totalLinhas++;

            //Imprimimos a linha no console. 
            //Todo conteúdo pode ser grande para ficar num JOptionPane.
            System.out.println(linha);
            
            //Somamos o número de caracteres
            numeroCaracteres += linha.length();
            
            //O split é um comando que separa as palavras de uma string
            //de acordo com um caractere. Ele gera um array com as 
            //palavras separadas.
            
            //Por exemplo, um split("i") na String "Vinicius", geraria
            //um array contendo ["V", "n", "c", "us"].
            //Para contar as palavras, vamos fazer um split nos espaços
            //e somar o tamanho do array.
            
            //Vamos fazer isso também só para linhas que não estão em 
            //branco. É isso que o if testa.
            
            if (linha.trim().length() &gt 0) {
                totalPalavras += linha.split("\s").length;
            }
        }
        
        //Agora exibimos o resultado
        StringBuilder sb = new StringBuilder("<HTML><BODY>Resultado da contagem");
        sb.append("<p><b>Quantidade de linhas:</b>").append(totalLinhas);
        sb.append("<br><b>Quantidade de palavras:</b> ").append(totalPalavras);
        sb.append("<br><b>Quantidade de caracteres: </b> ").append(numeroCaracteres);
        sb.append("</BODY></HTML>");
        JOptionPane.showMessageDialog(null, sb.toString());
    }
}
P

Obrigado Cara.
Vcs são feras mesmo.

Criado 20 de fevereiro de 2007
Ultima resposta 21 de fev. de 2007
Respostas 4
Participantes 3