2012-07-16 2 views
1

Java 사양에 따라 char 데이터 유형의 크기는 16 비트 또는 2 바이트입니다.안드로이드의 char 크기

그래서, 나는 기록 된 다음과 같은 코드를 가지고 :

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로 곱할 필요가 없습니다. 특히 스트림에서 문자의 바이트 크기에 대한 일반적인 가정을 할 수 없기 때문에이 값을 2로 곱할 필요가 없습니다.

문자 당 바이트 수는 문자 인코딩에 따라 다릅니다 (예 : 1 바이트 일 수 있음). 독자 구성 요소는 알고 있으며 읽은 문자의 양만 알려줍니다.

+0

제공된 링크에서 read()는 read (char [] buff)에 대해 오버로드됩니다. – ardent

+0

@NoBu Games @NoBu Games에서 약간 설명해 주시겠습니까? "문자 당 바이트 수는 문자 인코딩에 달려 있습니다 (예 : 1 바이트 일 수 있음). 판독기 구성 요소는이를 알고 있으며 읽은 문자 수만 알려줍니다." – minhaz

+0

@NoBu Games 귀하의 의견에 JLS 링크가 있습니까? 나는 이것에 대해 더 많이 읽고 싶다. 감사합니다 – minhaz