ダークエリア

SEのお仕事の備忘録や、ゲームの話などなどを記事に放り込む!!

DataInputStream.availableでlengthを取得できない?

javaDocには「この入力ストリームのメソッドの次の呼出し側によって、ブロックせずにこの入力ストリームから読み込むことができる(またはスキップできる)推定バイト数を返します。」とあり、

readできる文字数が返ってくるのかと思った。

しかし、たまーに失敗する。。

例えばHTTPのbodyをこれで取得した時、.availableが0を返す。(body内にデータはあるから、readすれば読み込める。)

 

原因がわからない。。

(というかそもそも実装してた現場が、なぜ.availableを使ってるのかもよくわかってない。。)

 

解決方法としては、readでlengthが取れるし、読み込めるし、なので、

単純に .read(src, 0, src.length) しました。