文件合并与分隔
作者 佚名技术
来源 程序设计
浏览
发布时间 2012-06-30
return false; } int iFileSize=FileSeek(iSourceFileHandle,0,2); //得到文件长度 if(bProgress) //显示进度条 { DlgProgress->Initialize(iFileSize,"恢复数据库从“"+SourceFile+"”到“"+DestPath+"”"); DlgProgress->Show(); } FileSeek(iSourceFileHandle,0,0); //回到文件头 Buffer=new char[1024]; __try { while(FileSeek(iSourceFileHandle,0,1)<iFileSize)//是否时文件尾 { if(bProgress&&g_bProcessEndByUser) //用户通过进度条终止 break; int iStepBy=0; //进度条推进的步长 //读入文件名长度 iBytesRead=FileRead(iSourceFileHandle,(char *)&iSize,sizeof(iSize)); if(iBytesRead!=sizeof(iSize)) { mErrorMsg("读入文件名长度时出错."); return false; } iStepBy+=iBytesRead; //读入文件名 Buffer[iSize]=0; //写入文件名字符串结束符 iBytesRead=FileRead(iSourceFileHandle,Buffer,iSize); if(iBytesRead!=iSize) { mErrorMsg("读入文件名时出错."); return false; } iStepBy+=iBytesRead; //读入文件长度 iBytesRead=FileRead(iSourceFileHandle,(char *)&iSize,sizeof(iSize)); if(iBytesRead!=sizeof(iSize)) { mErrorMsg("读入文件名长度时出错."); return false; } iStepBy+=(iBytesRead+iSize); if(bProgress) DlgProgress->Step(iStepBy); DestFile=DestPath+AnsiString(Buffer); iDestFileHandle=FileCreate(DestFile); if(iDestFileHandle<0) { sprintf(sTemp,"无法创建文件%s.",DestFile.c_str()); mErrorMsg(sTemp); return false; } //拷贝数据 for(int i=0;i<iSize/1024;i++) { iBytesRead=FileRead(iSourceFileHandle,Buffer,1024); iBytesWrite=FileWrite(iDestFileHandle,Buffer,1024); if(iBytesRead!=1024||iBytesWrite!=1024) { mErrorMsg("拷贝数据时出错."); return false; } } iSize=iSize%1024; //剩下的未读入数据 if(iSize==0) { FileClose(iDestFileHandle); iDestFileHandle=-1; continue; } iBytesRead=FileRead(iSourceFileHandle,Buffer,iSize); iBytesWrite=FileWrite(iDestFileHandle,Buffer,iSize); if(iBytesRead!=iSize||iBytesWrite!=iSize) { mErrorMsg("拷贝数据时出错."); return false; } FileClose(iDestFileHandle); iDestFileHandle=-1; } } __finally { FileClose(iSourceFileHandle); if(iDestFileHandle>0) FileClose(iDestFileHandle); delete [] Buffer; if(bProgress&&DlgProgress->Visible) DlgProgress->Close(); } return true; } |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: C++BUILDER的文件操作下一篇: C++Builder中异形按钮的实现
关于文件合并与分隔的所有评论