Problemas com buffRead [Resolvido]

Estou fritando a cabeça com esse código. Por favor se alguém puder me ajudar…

public static void leitor(String path) throws IOException {
	BufferedReader buffRead = new BufferedReader(new FileReader(path));
	String linha = "";
	int i = 0;
        while ((linha = br.readLine()) != null) {
         	System.out.println("Passo = " + i + "  Linha = " + linha);
            	i++;
        }
	buffRead.close();
}

Quando executo o código acima, lendo de um arquivo .txt contendo as seguintes linhas:

Passageiro 01
passageiro 02
Passageiro 03
Passageiro 04
Passageiro 05

tenho a seguinte saída:

run:
Passo = 0  Linha = 
Passo = 1  Linha = 
Passo = 2  Linha = passageiro01
Passo = 3  Linha = 
Passo = 4  Linha = 
Passo = 5  Linha = passageiro02
Passo = 6  Linha = 
Passo = 7  Linha = 
Passo = 8  Linha = passageiro03
Passo = 9  Linha = 
Passo = 10  Linha = 
Passo = 11  Linha = passageiro04
Passo = 12  Linha = 
Passo = 13  Linha = 
Passo = 14  Linha = passageiro05
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)

Alguém poderia me explicar porque é preciso 13 ciclo do laço while para que seja lido todas as 5 linhas do arquivo?

O que é uma linha para vc, não é uma linha para o computador…

Cada readLine vai ler e montar a String até encontrar um \n ou \r (só ler a documentação do método) que representam um fim de linha, trocando em miudos, seu arquivo não tem só 5 linhas, mas sim 15 (0 a 14), para comprovar use o notepad++ por exemplo

Ele vai mostrar alguns simbolos indicando o que estou tentando dizer e depois de remove-los ai sim vc terá o que deseja

tem algo de estranho. como o seu arquivo contem Passageiro e vc imprime com p minusculo e sem o espaço entre o ‘o’ e o ‘0’ ?

tem certeza que é este o arquivo q vc esta lendo?

Em primeiro lugar meus sinceros agradecimentos a boa vontade de voces!!

Realmente rodevopz no notepad++ apareceu a “realidade” do meu arquivo txt. Então não posso tipo digitar um arquivo via teclado e depois tentar ler ele via código que terei este problema?

Quanto a sua resposta peczenyj, acho que devo ter cometido uma falha ao postar ou não estou sabendo como inserir os textos aqui, que eu acho que é o mais provável.

Estou tentando aprender Java sozinho. Antes eu usava o VB6.0. E sinceramente estou encontrando muita dificuldade. Mas sei que o começo é terrível.

Vai depender da sua forma de implementação, se vc criou esse arquivo via teclado, então está inserindo + enter que o necessário, faz tempo que não mexo com a escrita de arquivos, mas no teclado sempre leia usando o nextLine do Scanner por exemplo, existe classes que possuem o writeLine para escrita não me lembro se BufferedWriter, FileWriter e afins tem, qualquer coisa cria um tópico sobre a escrita, o fato que da mesma forma que o java lê pode escrever já adicionando o \n no final da linha pra vc…

E está indo no caminho certo, mas java do zero e sozinho, não passe vontade jovem, leia isso o quanto antes para começar:

Bons estudos!

Valeu rodevops!!! muito obrigado pela atenção. Vou ler com certeza.

1 curtida