Linux Lazarus:TFileStream报告错误的FileSize

时间:2017-04-19 13:23:44

标签: linux file filestream filesize lazarus

我正在尝试通过Filestream读取我的文件以通过网络发送它,我注意到一些奇怪的事情。我不知道为什么。 我的实际文件大小是44.7KB,但是当文件流读取相同的文件时,它告诉我文件大小是45228字节或45.2 KB。这是为什么?有没有办法解决这个问题?

fs:TFileStream;

fs := TFileStream.Create('myfile.dat', fmOpenRead or fmshareDenyWrite);

showmessage(inttostr(fs.Size));

1 个答案:

答案 0 :(得分:1)

一种可能性是,无论您使用什么来报告文件大小,都使用kibibytes(1024字节)而不是kilobytes(1000字节)来测量大小。

将45228除以1024得到44.2KiB。这仍然没有完全匹配,但如果您的问题中存在转录错误,我不会感到惊讶。至少有一个,您写的是FileSize而不是Size(现在通过问题编辑更正),所以我的猜测是其他一些具体细节不正确。

除此之外,我认为问题很可能出在获取文件大小的其他方法中。可以信任TFileStream.Size来提供准确的值。如果这与其他措施没有关系,则其他措施可能是错误的。

在Linux上,您可以使用stat命令获取文件大小的确切报告。我希望它能产生与TFileStream.Size相同的值。