要一次讀取多個字節時,常常用到InputStream.available()方法,這個方法能夠在讀寫操做前先得知數據流裏有多少個字節能夠讀取。須要注意的是,若是這個方法用在從本地文件讀取數據時,通常不會遇到問題,但若是是用於網絡操做,就常常會遇到一些麻煩。好比,Socket通信時,對方明明發來了1000個字節,可是本身的程序調用available()方法卻只獲得900,或者100,甚至是0,感受有點莫名其妙,怎麼也找不到緣由。其實,這是由於網絡通信每每是間斷性的,一串字節每每分幾批進行發送。本地程序調用available()方法有時獲得0,這多是對方尚未響應,也多是對方已經響應了,可是數據尚未送達本地。對方發送了1000個字節給你,也許分紅3批到達,這你就要調用3次available()方法才能將數據總數所有獲得。 網絡
若是這樣寫代碼: