Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Leitura de arquivo txt

Olá,

Estou com dúvida na leitura de um arquivo txt.

Tenho um arquivo onde cada linha possui um tipo de registro.

Por exemplo:


linha 1  -> tipo A 
linha 2 -> tipo B 
linha 3 -> tipo C
linha 4 -> tipo  A
linha 5 -> tipo B
linha 6 -> tipo B
linha 7 -> tipo C

Cada conjunto de linha tipo A, B e C formam 1 registro. Estou com dificuldades de montar a lógica de montagem desses registros, visto que em cada loop eu pego apenas uma linha.

3 respostas

Como você utilizou a leitura do fluxo de entrada?

Olá, Nathan

resumidamente, estou percorrendo linha a linha.. estou travando em juntar mais de uma linha em 1 registro.

while ((linha = bfReader.readLine()) != null) {

            String[] a = linha.split(";");

            int tipoRegistro= Integer.parseInt(a[0].toString());
        }

        bfReader.close();
solução!

Rafael, tudo bem?

Cara, fiz um código utilizando a classe Scanner para ler o arquivo txt. e fico dessa maneira:

int i = 0;

    Scanner reader = new Scanner(new File("teste"));

    List lista1 = new ArrayList();

    while(reader.hasNextLine()) {
        String linha = reader.nextLine();

        if(lista1.isEmpty()) {
            /*
             *     Bloco de código para transformar
             *  a linha em questão em um tipo de dado específico
             *  e atribuir a um nova variavel (no caso "linhaNova")
             */
            lista1.add(linhaNova);
            i++;
        }else {
            /*
             *     Bloco de código para transformar
             *  a linha em questão em um tipo de dado específico
             *  e atribuir a um nova variavel (no caso "linhaNova")
             */
            if(lista1.get(i-1).getClass() != linhaNova.getClass()) {
                lista1.add(linhaNova);
            }
        }

        if(lista1.size()== 3) {

            System.out.println(lista1);
            //ou
            /*
             * Bloco de código para redirecionar o conjunto contido na Lista
             * para outro arquivo ou estrutura de dado
             */

            lista1.clear();
            i=0;
        }

    }

    reader.close();

É necessário saber antes quais são os tipos de dados que estão sendo representados no arquivo, pois, sendo txt o programa Java vai ler tudo como String. Claro, que, se você tiver algum algoritmo para meio que prever qual dado específico a linha tiver vai resolver de boa, e então, só fazer o parsing para a classe Wrapper que algoritmo escolher. Entretanto, se não tiver esse algoritmo sugiro você substituir o arquivo txt por um arquivo "properties" que apresenta linhas contendo chave/valor facilitando bastante a lógica de comparação de tipos.