hur.cn - 华软网

 热门搜索

怎么读取超大文件

  作者:未知    来源:网络    更新时间:2011/8/20
用vc6的mfc,一个大小1T的文件,要从7G位置开始读取1020个字节,怎么编写?
---华软 网友回答---
VC6貌似只支持2G的,但是我想应该没问题,一次读一点,分多次读,应该可以了
---华软网友回复---
是啊,32位的处理器只能寻址4G
---华软网友回复---
是啊,32位的处理器只能寻址4G
---华软网友回复---
SetFilePointer 

__int64 myFileSeek (HANDLE hf, __int64 distance, DWORD MoveMethod)
{
   LARGE_INTEGER li;
   li.QuadPart = distance;
   li.LowPart = SetFilePointer (hf, 
                                li.LowPart, 
                                &li.HighPart, 
                                MoveMethod);

   if (li.LowPart == INVALID_SET_FILE_POINTER && GetLastError() 
       != NO_ERROR)
   {
      li.QuadPart = -1;
   }

   return li.QuadPart;
}


---华软网友回复---
可以参考一下nc文件的读取解析:
http://blog.csdn.net/laomai/article/details/1740747
---华软网友回复---
ReadFileEx, WriteFileEx
---华软网友回复---
可以用fopen,fseek,fread,虽然第二个参数只支持到2GB左右,不过可以配合第三个参数SEEK_CUR一起使用,连着向后移动,应该可以实现移动到7G的地方,我这没那么大的文件,没办法试。
---华软网友回复---
内存映射
---华软网友回复---
如果一次读20M以上数据,你就映射吧。否则只要移动文件指针就可以了。不管文件多大。
---华软网友回复---
FAT32支持最大单个文件为4GB
NTFS支持最大单个文件为64GB      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。