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
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() > 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());
}