Porem devido a condição do while ele sempre pega o primeiro caracter, e quando dou o readline a linha vem faltando o primeiro caracter, gostaria que me ajudassem com isso.
Java != Pascal
Java != iostreams (C++)
Em Pascal você usa o EOF para testar o fim de um arquivo, e em C++ você usa o “failbit” para checar a mesma coisa. Só que em Java você faz exatamente como o von.juliano lhe ensinou.
Se, por algum motivo, sua religião* não permite uma atribuição dentro de uma condição de um while, você pode tentar:
for(Stringlinha=leitor.readLine(); linha != null; linha = leitor.readLine()) {//Codehere
}
Eu falei “religião” mas é que há empresas, como o Bradesco, que exigem que o código Java seja submetido a uma auditoria com o PMD e/ou Checkstyle, e estipulam a regra “não permitir atribuições dentro de condições”. Neste caso, embora haja um pouco de código redundante, essa regra é obedecida.