由於在此處的其他帖子在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