1021バイトのブロックで任意のサイズのファイルを読み込んでいます。ファイルの最後のブロックのブロックサイズは1021バイト以下です。現時点では、aBufferedInputStream
をラップしてFileInputStream
、次のように(大まかに)コードを使用してこれを行っています(ここreader
で、BufferedInputStream
これはループで動作しています)。
int availableData = reader.available();
int datalen = (availableData >= 1021)
? 1021
: availableData;
reader.read(bufferArray, 0, datalen);
ただし、APIドキュメントを読むとavailable()
、呼び出しが「ブロック」される前に、使用可能なサイズの「見積もり」のみが示されることに注意してください。各反復の値を出力するavailableData
と、期待値が得られるようです-ファイルサイズから始めて、<= 1021になるまで徐々に小さくなります。これがローカルファイルであるとすると、これが正しい値であると期待するのは間違っていますか?available()
間違った答えを出す状況はありますか?
編集:申し訳ありませんが、追加情報。はBufferedInputStream
に巻き付けられていFileInputStream
ます。FISのソースコードから、ローカルファイルの場合に残っているデータ量の尺度としてavailable()を信頼するのが安全だと思います。私は正しいですか?