DataInputStreamのソースにこんな風に書いてありました。
int ch1 = in.read();
int ch2 = in.read();
if ((ch1 | ch2) < 0)
throw new EOFException();

2回readしてどちらかがストリームの最後だったらエラーするということです。
if(ch2<0) だけで十分ではないのでしょうか?
ch1が-1ならば必ず ch2も-1になると思います。違ったらレスください