1. 程式人生 > >DataInput.readInt()報錯:java.io.EOFException

DataInput.readInt()報錯:java.io.EOFException

實現WritableComparable介面序列化時,在readFields方法裡,使用DataInput的readInt方法讀取在write方法裡寫的int,報錯:EOFException。
這個錯的意思是:輸入流已經到了結尾,在這裡的意思就是說,輸入流裡不夠一個整形(32位),查到的問題是:在write方法裡,沒有使用writeInt而使用了write方法。雖然這個錯誤很低階,我們都知道readInt要和writeInt配套使用,還是好奇查了一下write這個方法。這個方法的官方解釋是:Writes to the output stream the eight low-order bits of the argument .(將引數的八個低位寫入輸出流。)所以,問題就很明顯了,只寫了低八位,當然不夠讀了。修改為writeInt即可。