C++二进制流读取远不够指定长度

FILE *fp;
fp = fopen("C:\Users\Administrator\Desktop\工程\rec\str.bin","rb");
if(fp == NULL) return;
len_file = _filelength(_fileno(fp));
len_pack = len_file/10;
if((len_file-len_pack*FrameNum)!=0)
FrameNo = FrameNum+1;

unsigned char **FileBuffer = new unsigned char*[FrameNo];    //待压缩视频文件
for(i=0;i<FrameNo;i++)
    FileBuffer[i] = new unsigned char[len_pack];

fseek(fp,0,SEEK_SET);
    for(i=0;i<FrameNum;i++)  //
    {
        fread(FileBuffer[i],sizeof(unsigned char),len_pack,fp);
    }
if(FrameNo != FrameNum)
{
    fread(FileBuffer[i],sizeof(unsigned char),len_file-i*len_pack,fp);
}
fclose(fp);

数据量大的话,最好分批读取,比如每次读4KB这样。

数据量太大了,视频文件一般比较大,可以用内存映射文件方式,CreateFileMapping()

二进制读取,指定读取的最大读取长度,进行分批处理

1、读取文件的长度信息正确吗?
2、调试这套文件系统API的错误码,根据错误码去文档中找错误信息。

可以每次都读取固定的字节。。

if((len_file-len_pack*FrameNum)!=0)
FrameNo = FrameNum+1;
先确定这里是否正确哪?