Comme d'autres messages ici à stackoverflow l'ont déjà expliqué, l'exception EOFException se produit lorsque la fin du flux est atteinte de manière inattendue. J'ai une méthode, qui convertit un tableau d'octets en un nombre long. Ce tableau d'octets est un nombre uint64_t que j'ai récupéré sur ma liaison java à partir d'une base de données en C. Je connais les problèmes avec uint64_t et la conversion en longs nombres (le bit signé).EOFException dans mon code Java
Voici ma méthode: (!)
public long castByteArrayToLong(byte[] bb){
ByteArrayInputStream stream = new ByteArrayInputStream(bb);
DataInputStream di = new DataInputStream(stream);
long number=-2;
try {
number = di.readLong();
} catch (Exception e) {
e.printStackTrace();
}
return number;
}
Cette méthode parfois génère cette exception:
java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:180)
at java.io.DataInputStream.readLong(DataInputStream.java:399)
at TreeManager.castByteArrayToLong(TreeManager.java:191)
at TreeManager.test2(TreeManager.java:442)
at TreeManager.main(TreeManager.java:72)
Ce que je ne comprends pas pourquoi puis-je obtenir cette exception? Je ne me suis pas spécifié la longueur du tableau d'octets, mais je passe juste le tableau d'octets à ByteArrayInputStream, donc théoriquement je ne devrais pas obtenir une telle exception, je pense.
(S'il vous plaît pardonnez-moi, si la solution est évidemment)
merci, ce fut bien le problème – mkn