6 个解决方案
#1
打开两个文件,目标文件移动到最后,然后读第一个文件——写入目标文件。
#2
creatfile(0)->openfile(file1)->readfile1->writefile 1 to 0 ->close file1;
->readfile2->writefile 2 to 0 using append->close file2;...
追加写入文件
->readfile2->writefile 2 to 0 using append->close file2;...
追加写入文件
#3
费那事儿!
计算机组成原理→ DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
system("cmd /c copy /b file1+file2+file3 file123 >NUL 2>NUL");
计算机组成原理→ DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
#4
谢谢了,思路我倒是明白,就是不会编写,希望能够有比较完整的代码
#5
CFile *readfile,*writefile;
CString ininame,inidir;
//获得分割文件时生成的INI文件
GetDlgItem(IDC_EDINI)->GetWindowText(ininame);
//获得INI文件所在目录
inidir=FindPath(ininame);
//获得分割前文件信息包括最后块序号,文件名(无扩展名),扩展名,块大小
char pagenum[128],pagename[128],pageext[128],size[128];
::GetPrivateProfileString("FilePartition","name","",pagename,128,ininame);
::GetPrivateProfileString("FilePartition","ext","",pageext,128,ininame);
::GetPrivateProfileString("FilePartition","pageend","",pagenum,128,ininame);
::GetPrivateProfileString("FilePartition","size","",size,128,ininame);
int pagecount=atoi(pagenum);
CString desname; //合并后文件保存路径
CString srcname; //合并的文件的路径
desname.Format("%s\\%s.%s",inidir,pagename,pageext);
HANDLE hfile=::CreateFile(desname,GENERIC_WRITE|GENERIC_WRITE,
0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
CloseHandle(hfile);
writefile=new CFile(desname,CFile::modeWrite);
for(int i=1;i<pagecount;i++)
{
srcname.Format("%s\\%spart%d_%s.dat",inidir,pagename,i,pageext);
readfile=new CFile(srcname,CFile::modeRead);
DWORD filelen=readfile->GetLength();
BYTE *b=new BYTE[filelen];
readfile->Read(b,filelen);
writefile->Write(b,filelen);
readfile->Close();
delete b;
}
writefile->Close();
delete writefile;
delete readfile;
LZ参考:
http://blog.sina.com.cn/s/blog_4171e80d0100k94n.html
#6
赞一个~
#1
打开两个文件,目标文件移动到最后,然后读第一个文件——写入目标文件。
#2
creatfile(0)->openfile(file1)->readfile1->writefile 1 to 0 ->close file1;
->readfile2->writefile 2 to 0 using append->close file2;...
追加写入文件
->readfile2->writefile 2 to 0 using append->close file2;...
追加写入文件
#3
费那事儿!
计算机组成原理→ DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
system("cmd /c copy /b file1+file2+file3 file123 >NUL 2>NUL");
计算机组成原理→ DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
#4
谢谢了,思路我倒是明白,就是不会编写,希望能够有比较完整的代码
#5
CFile *readfile,*writefile;
CString ininame,inidir;
//获得分割文件时生成的INI文件
GetDlgItem(IDC_EDINI)->GetWindowText(ininame);
//获得INI文件所在目录
inidir=FindPath(ininame);
//获得分割前文件信息包括最后块序号,文件名(无扩展名),扩展名,块大小
char pagenum[128],pagename[128],pageext[128],size[128];
::GetPrivateProfileString("FilePartition","name","",pagename,128,ininame);
::GetPrivateProfileString("FilePartition","ext","",pageext,128,ininame);
::GetPrivateProfileString("FilePartition","pageend","",pagenum,128,ininame);
::GetPrivateProfileString("FilePartition","size","",size,128,ininame);
int pagecount=atoi(pagenum);
CString desname; //合并后文件保存路径
CString srcname; //合并的文件的路径
desname.Format("%s\\%s.%s",inidir,pagename,pageext);
HANDLE hfile=::CreateFile(desname,GENERIC_WRITE|GENERIC_WRITE,
0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
CloseHandle(hfile);
writefile=new CFile(desname,CFile::modeWrite);
for(int i=1;i<pagecount;i++)
{
srcname.Format("%s\\%spart%d_%s.dat",inidir,pagename,i,pageext);
readfile=new CFile(srcname,CFile::modeRead);
DWORD filelen=readfile->GetLength();
BYTE *b=new BYTE[filelen];
readfile->Read(b,filelen);
writefile->Write(b,filelen);
readfile->Close();
delete b;
}
writefile->Close();
delete writefile;
delete readfile;
LZ参考:
http://blog.sina.com.cn/s/blog_4171e80d0100k94n.html
#6
赞一个~