由于在此处的其他帖子在stackoverflow已经解释过,当流的结束达到意外时发生EOFException。 我有一个方法,它将一个字节数组转换为一个长整数。这个字节数组是一个uint64_t数字,我通过从C中的数据库的java绑定检索到的数据。我知道uint64_t的问题并将其转换为长数字(有符号位)。我的Java代码中的EOFException
这里是我的方法:(!)
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;
}
这种方法有时会抛出此异常:
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)
我不明白的是为什么我能得到那个异常?我没有指定自己字节数组的长度,但是我只是将字节数组传递给ByteArrayInputStream,所以理论上我不应该得到这样的异常,我想。
(请原谅我,如果解决方案显然是)
谢谢你,那确实是问题 – mkn 2010-08-02 13:40:27