DataInputStream.availableでlengthを取得できない?
javaDocには「この入力ストリームのメソッドの次の呼出し側によって、ブロックせずにこの入力ストリームから読み込むことができる(またはスキップできる)推定バイト数を返します。」とあり、
readできる文字数が返ってくるのかと思った。
しかし、たまーに失敗する。。
例えばHTTPのbodyをこれで取得した時、.availableが0を返す。(body内にデータはあるから、readすれば読み込める。)
原因がわからない。。
(というかそもそも実装してた現場が、なぜ.availableを使ってるのかもよくわかってない。。)
解決方法としては、readでlengthが取れるし、読み込めるし、なので、
単純に .read(src, 0, src.length) しました。