通过计数和File.length()在文件大小上有1个字节的差异

Bud*_*ddy 1 java file

我正在File.length()计算字数,我总是得到1个字节File.length().

这是我用来比较的片段:

File testFile = new File("testdir", "testfile.txt");
FileInputStream in = new FileInputStream(testFile );

byte[] buffer = new byte[1024];
int len = in.read(buffer);

int byteCount = len;
while (len != -1) {
    len = in.read(buffer);
    byteCount += len;
}
System.out.println("count: " + byteCount + ", file.length(): " + 
     testFile.length() + ", is_equal: "+(byteCount == testFile.length()));
Run Code Online (Sandbox Code Playgroud)

而输出是 count: 15853294, file.length(): 15853295, is_equal: false

1字节来自哪里?是EOF?

wer*_*ero 10

最后一个read操作返回-1,您将其添加到byteCount.