2012-07-16 9 views
1

炭根據Java規範的大小,一個char數據類型的大小是16位或兩個字節。在Android

所以,我有寫下面的代碼:

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

爲我自己上傳的服務器上的文件,這是工作相當優良獲得總流的大小,我知道它們的大小。

回答

1

該方法返回的讀出字符的量。該值不需要乘以2,特別是因爲您無法對流中字符的字節大小進行一般假設。

每字符的字節數依賴於字符編碼(它可以是例如1個字節)。讀者組件知道並且只會告訴你讀取字符的數量。

+0

在所提供的鏈接,讀()是重載用於讀(燒焦[]的buff)。 – ardent 2012-07-16 23:52:19

+0

@NoBu Games請你稍微解釋一下:「每個字符的字節數量取決於字符編碼(例如,它可以是1個字節)。讀者組件知道並且只告訴你讀取字符的數量。 – minhaz 2012-07-16 23:54:51

+0

@NoBu Games您有任何JLS鏈接可供您評論?我想了解更多關於此的信息。感謝 – minhaz 2012-07-16 23:57:31