gente estou seguindo o livro dos caras da Deitel, e estou achando uma parte do livro meio dificil de se entender. Tem um exemplo deles que uma parte do código é essa:
public void openFile()
{
try
{
input = new ObjectInputStream(new FileInputStream("clients.ser"));
}
catch(IOException ioException)
{
System.err.println("Erro ao abrir arquivo.");
}
}
// lê o registro no arquivo
public void readRecords()
{
AccountRecordSerializable record;
System.out.printf("%-10s%-12s%-12s%10s\n", "Account",
"First Name", "Last Name", "Balance");
try
{
while(true)
{
record = (AccountRecordSerializable) input.readObject(); // realiza um downcast
// coerção dos dados
// exibe o conteúdo de registro
System.out.printf("%-10d%-12s%-12s%10.2f\n",
record.getAccount(), record.getFirstName(),
record.getLastName(), record.getBalance());
}
}
catch(EOFException endOfFileException)
{
return; // fim do arquivo foi alcançado
}
catch(ClassNotFoundException classNoFoundException)
{
System.err.println("Unable em criar objeto.");
}
catch(IOException ioException)
{
System.err.println("Erro durante leitura do arquivo.");
}
}
A minha pergunta é: como o while(true) para?? eu não vejo nada que venha fazer a condição ficar false!!! e também não há breaks… extranho. Mas o incrivel é que o aplicativo funciona de modo correto. Onde esta o truque??