MFC通过文件映射方式读写文件(实测)

本文档介绍了如何使用MFC在C++中通过文件映射技术,实现源文件与目标文件的内容对比及将源文件内容写入目标文件的操作。详细步骤包括两个部分:文件内容对比和文件映射写入。
摘要由CSDN通过智能技术生成

 

1、以下代码通过文件映射的方式,进行源文件与目标文件进行对比


/*************************************************************************************
Function Name:  CompareFileContentEqual
Input:			pszsrc:源路径
				psztar:目标路径
Output:
Return:			成功返回TRUE,失败返回FALSE
Desciption:		通过文件映射方式进行文件对比,能大大提高速度,但测试过程发现
				映射磁盘超过2G的文件或U盘文件超过800M会报错(内存空间不足,这里应该跟电脑配置有关)
				所以通过分段映射对比,每次映射500M文件内容进行比对,直至对比完	
				需要1G内存,否则可能报内存不足
**************************************************************************************/
BOOL CDeviceOpreationDlg::CompareFileContentEqual(const CString & pszsrc, const CString & psztar)
{

	LPCTSTR pSrcContents,pTarContent;
	HANDLE hsrcFileMap, htarFileMap;
	void *srcBuffer,*tarBuffer; 

	HANDLE srcHdlr ,tarHdlr;
	LARGE_INTEGER lgInteger;
	DWORD nSrcFileLength ,nTarFileLength;
	srcHdlr = tarHdlr = INVALID_HANDLE_VALUE;
	hsrcFileMap = htarFileMap = NULL;
	pSrcContents = pTarContent = NULL;

	srcBuffer = tarBuffer = NULL;

	int err = 0;
	int Cnt_500M=0,RemByteLen_500M=0;  //500M数量,不足500M的长度
	DWORD Length_500M = 500*MB_LENTH*KB_LENTH;

	//__try, __finally
	//“不管在何种情况下,在离开当前的作用域时,finally块区域内的代码都将会被执行到”
	//__finally块被执行的流程时,无外乎三种情况。
	//第一种就是顺序执行到__finally块区域内的代码,这种情况很简单,容易理解;
	//第二种就是goto语句或return语句引发的程序控制流离开当前__try块作用域时,系统自动完成对__finally块代码的调用;
	//第三种就是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值