A variável “din” tem 5 registros com 8 campos. Da forma que fiz, conforme o condigo abaixo, da erro depois de ler o último campo, usando while ((aux = din.readUTF())!= null), que está gardado dentro da variável “din”. Tbm usei while ((aux = din.readLine())!= null), mas lia das informaçoes de foma errada, além de ser Obsoleto!
Alguém poderia me dar uma dica de como controlar a leitura até o último registro com o While?
din = http.openDataInputStream();
Vector linha = new Vector();
tam = 8;
String aux;
int campos = 0;
int ch = 0;
try {
while ((aux = din.readUTF())!= null) {
coluna.add(aux);
campos++;
if (campos == 8) {
linha.add(coluna);
coluna = new Vector();
campos = 0;
}
}
De modo geral, para ler corretamente um DataInputStream, é necessário saber como é que foi criado o arquivo que deve ser lido. Normalmente você precisaria saber se foi usado um DataOutputStream para gerá-lo, e qual foi a sequência exata das operações.
Por exemplo, para cada writeUTF você usa um readUTF, para cada writeInt um readInt, e assim por diante.
Grave um indicador de quantos elementos você pretende ler do seu arquivo com writeInt. Ao ler seu arquivo de volta, leia esse indicador com readInt, e então fica mais fácil você conseguir ler tudo.
Nunca use readLine em um DataInputStream, embora esse método esteja disponível. É misturar abacaxis com carambolas; é uma mistura indigesta.