用CFile类读取大文件

这篇博客介绍了如何通过创建CFile64类来扩展MFC的CFile类,使其能够处理超过4GB的大文件。CFile64使用64位整型来处理文件位置和长度,从而支持更大的文件操作,如Seek、SetLength、LockRange和UnlockRange。示例代码展示了如何实现这些功能,以兼容Windows 2000和XP系统上的大文件读取。
摘要由CSDN通过智能技术生成

随着Windows 2000和XP的普及,现在的大文件越来越多,而VC6中MFC的CFile类只支持不大于4GB的文件, 原因在于CFile类中使用了32位整型来处理文件,32位数的范围是2的32次方(4GB),超过这个范围的文件CFile就管不了,微软.Net中VC7的CFile类支持大于4GB的文件,而.Net还不普及,开发桌面应用VC6还是首选,所以我们可以参照VC7写一个CFile的继承类CFile64,使它支持大于4GB的文件:
class CFile64 : public CFile
{
public:

// Attributes
 ULONGLONG GetPosition();


// Overridables

 virtual ULONGLONG Seek(LONGLONG lOff, UINT nFrom);
 virtual void SetLength(ULONGLONG dwNewLen);
 ULONGLONG GetLength() ;

 virtual void LockRange(ULONGLONG dwPos, ULONGLONG dwCount);
 virtual void UnlockRange(ULONGLONG dwPos, ULONGLONG dwCount);


};


#include "stdafx.h"
#include "file64.h"


// CFile64 implementation


ULONGLONG CFile64::Seek(LONGLONG lOff, UINT nFrom)
{
 ASSERT_VALID(this);
 ASSERT((HANDLE)m_hFile != INVALID_HANDLE_VALUE);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值