java中的eof_我的Java代码中的EOFException

正如stackoverflow上的其他帖子已经解释过的那样,当意外到达流的末尾时,会发生EOFException.

我有一个方法,可以将字节数组转换为长整数.这个字节数组是一个uint64_t数字,我通过Java绑定从C中的数据库中检索了该数字.我确实知道uint64_t并将其强制转换为长数字(带符号位)的问题.

这是我的方法:

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,所以我认为从理论上讲我不会出现这样的异常.

(如果解决方法很明显,请原谅我)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值