根据Java规范,char数据类型的大小为16位或两个字节。
所以,我有以下代码:
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();
当我自己在服务器上上传文件并知道它们的大小时,哪个工作得很好。
答案 0 :(得分:1)
该方法返回读取的字符数。该值不需要乘以2,特别是因为您无法对流中字符的字节大小做出一般假设。
每个字符的字节数取决于字符编码(例如,它可以是1个字节)。读者组件知道这一点,并且只告诉你读取字符的数量。