如何较好地合并两个文件 这是我的一段简单的代码:CFile srcFile;CFile tarFile;int iRet;while((iRet=tarFile.Read(buf,1024))>0){ srcFile.Write(buf,iRet);} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你这个相当于拷贝文件;接下去打开另外一个tarFile接着读取写入srcFile就可以了。 /*************************************************** Function: Cls_File::UniteFiles Description: 文件合并 Table Accessed: Table Updated: Parameter: LPCTSTR lpDstFileName - 合并的目标文件 : LPCTSTR lpSrcFileName - 被合并的文件 Return: BOOL - 合并是否成功 Others: ***************************************************/BOOL Cls_File::UniteFiles(LPCTSTR lpDstFileName, LPCTSTR lpSrcFileName){ ASSERT(AfxIsValidString(lpDstFileName)); ASSERT(AfxIsValidString(lpSrcFileName)); //以只写方式打开目标文件 Cls_File dstFile; BOOL bOpen = dstFile.Open(lpDstFileName,accessWriteOnly); if(bOpen == FALSE) return FALSE; //以只读方式打开被合并文件 Cls_File srcFile; bOpen = srcFile.Open(lpSrcFileName,accessReadOnly); if(bOpen == FALSE) { dstFile.Close(); return FALSE; } //设置读写文件指针 dstFile.SeekToEnd(); srcFile.SeekToBegin(); DWORD dwLength = srcFile.GetLength(); char buf[BUFSIZE]; //分块合并文件内容 while(dwLength > 0) { //每次读写一个缓冲区大小的内容 memset(buf,0,BUFSIZE); DWORD dwRead = srcFile.Read(buf,BUFSIZE); DWORD dwWrite = dstFile.Write(buf,dwRead); //如果读与写的长度不同,需要重新调整读指针的位置 if(dwWrite != dwRead) srcFile.Seek(dwWrite - dwRead,current); //修改文件长度 dwLength -= dwWrite; } //关闭文件 srcFile.Close(); dstFile.Close(); return TRUE;} Cls_File dstFile;这里你用CFile就行了 这个要看什么文件了,如果是HTML,PDF等类型的文件,你需要分析文件格式,然后才能合并。这类文件除了有物理结构还有逻辑结构 许可证如何用VC++来实现呢? 请教串口读的问题? 如何给Win32 DLL添加MFC支持?(Dllmain重定义的问题) 关于CRichEditCtrl的问题 关于VC编写的DLL中函数由Delphi调用的问题 如何用sql的insert into向access 数据库中添加日期型的字段??? 关于派生的一个小问题 正版用户只能通过放入光盘的方式访问大本营的具体内容吗? Help!Help!!Help!!! 怎样获得当前子窗口中的弹出式菜单的句柄? 一个进程与非自己子线程的通信 “strncpy”被声明为否决的
Function: Cls_File::UniteFiles
Description: 文件合并
Table Accessed:
Table Updated:
Parameter: LPCTSTR lpDstFileName - 合并的目标文件
: LPCTSTR lpSrcFileName - 被合并的文件
Return: BOOL - 合并是否成功
Others:
***************************************************/
BOOL Cls_File::UniteFiles(LPCTSTR lpDstFileName, LPCTSTR lpSrcFileName)
{
ASSERT(AfxIsValidString(lpDstFileName));
ASSERT(AfxIsValidString(lpSrcFileName));
//以只写方式打开目标文件
Cls_File dstFile;
BOOL bOpen = dstFile.Open(lpDstFileName,accessWriteOnly);
if(bOpen == FALSE)
return FALSE;
//以只读方式打开被合并文件
Cls_File srcFile;
bOpen = srcFile.Open(lpSrcFileName,accessReadOnly);
if(bOpen == FALSE)
{
dstFile.Close();
return FALSE;
} //设置读写文件指针
dstFile.SeekToEnd();
srcFile.SeekToBegin(); DWORD dwLength = srcFile.GetLength();
char buf[BUFSIZE];
//分块合并文件内容
while(dwLength > 0)
{
//每次读写一个缓冲区大小的内容
memset(buf,0,BUFSIZE);
DWORD dwRead = srcFile.Read(buf,BUFSIZE);
DWORD dwWrite = dstFile.Write(buf,dwRead);
//如果读与写的长度不同,需要重新调整读指针的位置
if(dwWrite != dwRead)
srcFile.Seek(dwWrite - dwRead,current);
//修改文件长度
dwLength -= dwWrite;
}
//关闭文件
srcFile.Close();
dstFile.Close();
return TRUE;
}
这里你用CFile就行了