Java 仕様によると、charデータ型のサイズは 16 ビットまたは 2 バイトです。
だから、私は次のコードを書いています:
private static final int BUFFER_SIZE=1024;
char[] buffer=new char[BUFFER_SIZE];
BufferedReader br= new BufferedReader(new InputStreamReader(conn.getInputStream()));
while (true){
byteFromStream=in.read(buffer);
if (byteFromStream==-1) break;
totalBytesLoaded=totalBytesLoaded+byteFromStream*2;
}
しかし、いくつかの奇妙な理由で、ストリームで実際に読み取られた文字数を返すread()の仕様に従って、ストリームで使用できるよりも多くのバイトを読み取っています。
ああ、私は合計ストリームサイズを取得しています
bytesTotal=conn.getContentLength();
私自身がサーバーにファイルをアップロードし、それらのサイズを知っているので、これはかなりうまく機能しています。