2011-09-04 3 views
2

아래 코드에서 fr_count와 len이 다른 이유는 무엇입니까?java의 파일 길이 계산 : FileReader 대 File.length

FileReader fr = new FileReader(filename); 
int c; 
long fr_count = 0; 
while (-1 != (c = fr.read())) 
    fr_count++; 
long len = new File(filename).length(); 

위의 코드는 두 파일에 사용되었습니다. 결과는 다음과 같습니다.

test.txt 
FileReader: 263742 
File.length: 265963 
output.enc 
FileReader: 146360 
File.length: 212998 
+3

'FileReader'를'FileInputStream'으로 대체하고 자신을 계몽하십시오. – BalusC

답변

6

은 파일에서 읽은 글자 수입니다. len은 파일의 바이트 수입니다. 그것들은 두 가지 다른 것들입니다. 예 : 일부 문자는 여러 바이트로 표시되며 일부 인코딩은 byte order mark을 사용합니다. 이 두 가지 모두 파일의 문자 수와 바이트 수 사이의 차이를 만듭니다.

3

File.Length은 파일에서 Bytes의 수를 반환합니다. FileReader.read()을 세면 파일에 몇 개의 문자가 있는지 알려줍니다.