2

以下のコードで fr_count と len が異なるのはなぜですか?

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

上記のコードを 2 つのファイルで使用しました。結果は次のとおりです。

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

2 に答える 2

6

fr_countファイルから読み取った文字数です。lenファイルのバイト数です。それらは2つの非常に異なるものです。たとえば、一部の文字は複数のバイトで表現され、一部のエンコーディングではバイト オーダー マークが使用されます。これらはどちらも、ファイル内の文字数とバイト数に違いをもたらします。

于 2011-09-04T02:57:21.753 に答える
3

File.Lengthファイル内の数を返してBytesいます。カウントFileReader.read()とは、ファイル内の文字数を示しています。

于 2011-09-04T02:58:00.610 に答える