一、引言
在上一篇中,需要获取文件的大小,但是获取的文件大小与从文件中读取的数据大小总是对不上(10行数据,文件大小是129,但是读取数据是119),因此,实现的服务器总是出现这个错误:net::ERR_CONTENT_LENGTH_MISMATCH
二、原因
造成这个错误的原因是,获取文件大小时,是使用seekg函数,而它是安字节来跳转读取位置的,但是读取文件时,我却使用了以文本打开的方式来读取文件。而以文本的方式读取文件时每个平台是会对行结束符做处理的。比如说,windows下会自动的把\r\n结尾的行读取为\n结尾。由于这样的转换,导致了上面的情况(10行数据,文件大小是129,但是读取数据是119)。
以二进制方式打开:
可以看到,行是以\r\n结尾的。
以文本方式打开:
可以看到,行是以\n为结尾的,也就是说,当我们以文本方式打开是,操作系统为我们做了自动转换。
时间: 2024-10-16 08:48:48