Apply data from a txt to ArrayList

0

I need tips on how to create (where to start, which functions to use, etc.).

A generic project that receives a .txt file, reads the data and stores the words in ArrayList<> .

I have already created a structure for:

  • Load a file .txt (within the project) through input of user;
  • Read the file data;

I have no idea how to get information from this '.txt' and apply it to ArrayList<> .

Code:

public static void main(String[] args) {
    Scanner ler = new Scanner(System.in);

    System.out.printf("Informe o nome de arquivo texto:\n");
    String nome = ler.nextLine();

    System.out.printf("\nConteúdo do arquivo texto:\n");
    try {
      FileReader arq = new FileReader(nome);
      BufferedReader lerArq = new BufferedReader(arq);

      String linha = lerArq.readLine(); // lê a primeira linha

      while (linha != null) {
        System.out.printf("%s\n", linha);

        linha = lerArq.readLine(); // lê da segunda até a última linha
      }

      arq.close();
    } catch (IOException e) {
        System.err.printf("Erro na abertura do arquivo: %s.\n",
          e.getMessage());
    }

    System.out.println();
  }
    
asked by anonymous 31.08.2017 / 16:12

1 answer

0

For this, we can use the split .

This gets an expression that will split the String between the elements:

Example:

"boo:and:foo".slpit(":");

will result in:

{ "boo", "and", "foo" }

In your case, let's take the lines and separate them between the spaces:

public static void main(String[] args) {
    Scanner ler = new Scanner(System.in);

    System.out.printf("Informe o nome de arquivo texto:\n");
    String nome = ler.nextLine();

    System.out.printf("\nConteúdo do arquivo texto:\n");
    try {
        /**
         * VAMOS CRIAR A LISTA DE STRINGS ONDE VAMOS ARMAZENAR
         */
        List<String> listPalavras = new ArrayList<>();

      FileReader arq = new FileReader(nome);
      BufferedReader lerArq = new BufferedReader(arq);

      String linha = lerArq.readLine(); // lê a primeira linha

      while (linha != null) {
        System.out.printf("%s\n", linha);
          /**
           * PARA PEGARMOS AS PALAVRAS,VAMOS SEPARAR A LINHA POR ESPAÇOS!
           */
        String[] palavrasDaLinha = linha.split(" ");
        /**
           * VAMOS ARAMZENAR O ARRAY NA LISTA
           */
        for(String palavra : palavrasDaLinha) {
              /**
               * VAMOS CONSIDERAR PALAVRAS APENAS O QUE TENHA UM TAMANHO MAIOR QUE 1 
               * ESPACOS VAZIOS, TAMBÉM NAO SÃO CONSIDERADOS
               */
            if( palavra.trim().length() > 1 && !"".equals(palavra.trim())) {
                listPalavras.add(palavra);  
            }

        }

        linha = lerArq.readLine(); // lê da segunda até a última linha
      }

      arq.close();
      /**
       * VAMOS INFORMAR O TAMANHO DA LISTA, POR EXEMPLO
       */
      System.out.println("\n\n");
      System.out.printf("Total de palavras no arquivo: %s\n", listPalavras.size());

    } catch (IOException e) {
        System.err.printf("Erro na abertura do arquivo: %s.\n",
          e.getMessage());
    }

    System.out.println();
  }
    
31.08.2017 / 23:48