1

根据 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();

当我自己在服务器上上传文件并且我知道它们的大小时,这工作得很好。

4

1 回答 1

1

该方法返回读取字符的数量。该值不需要乘以 2,尤其是因为您无法对流中字符的字节大小做出一般假设。

每个字符的字节数取决于字符编码(例如可以是 1 个字节)。阅读器组件知道这一点,并且只告诉您阅读字符的数量。

于 2012-07-16T23:50:28.393 回答