Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Por que se eu não colocar a variável linha, ele só ler as linhas pares?

Tava fazendo um teste, e tentei tirar a variável linha, para ver como ele ia funcionar e a saída foi apenas das linhas pares. Por que isso aconteceu?

public class TesteLeitura {

    public static void main(String[] args) throws IOException {


        InputStream fis = new FileInputStream("javaio.txt");
        Reader isr = new InputStreamReader(fis); 
        BufferedReader br = new BufferedReader(isr);


        while(br.readLine() !=  null) {
            System.out.println(br.readLine());

        }
        br.close();
    }
}

Saída: 2- Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 4- Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

1 resposta
solução!

Olá, Lucas,

Vamos lá! A chave da solução está em entender o que o método readLine() faz. Perceba que toda vez que vc o invoca ele retorna uma nova linha correto? Causando isso:


public class TesteLeitura {

    public static void main(String[] args) throws IOException {


        InputStream fis = new FileInputStream("javaio.txt");
        Reader isr = new InputStreamReader(fis); 
        BufferedReader br = new BufferedReader(isr);

        /*
         * O primeiro readLine() obtém a primeira linha
         * depois, ele substitui a linha atual pela próxima e
         * verifica se ela é nula
         */
        while(br.readLine() !=  null) {
            System.out.println(br.readLine()); // Novamente substitui a linha atual pela próxima

        }
        br.close();
    }
}

Deu pra entender que está realizando duas leituras seguidas? Por isso precisa armazenar em uma variável: uma para verificação e outra para imprimir a mesma.

Abraços e bons estudos