Apply data from a txt to Arraylist

Asked

Viewed 659 times

0

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

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

I’ve already created a framework for:

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

I have no idea how to take the information from this '.txt' and apply it to the 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();
  }
  • You want to save each row of the file into one ArrayList?

  • How’s the line of that file? Do you want to simply play the full line within the position of an Array? or wants to divide it and do some treatment?

  • So I’m doing in parts, first precious just play the line, then I start doing the treatment, using the comma as a separator.

1 answer

1


For this, we can use the method split.

This takes an expression that will divide the String among 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();
  }

Browser other questions tagged

You are not signed in. Login or sign up in order to post.