复制和删除文件夹代码

程序说明:以下代码片段运用了递归思想。

1、复制文件夹代码

BOOL CopySrcToDst(CString SrcDir, CString DstDir) { HANDLE hfile; //查找文件句柄 WIN32_FIND_DATA wfdata; //文件信息结构 BOOL IsOver = FALSE; CString src_file; //包含源文件的路径 CString src_dir; //源文件路径目录 CString src_sub_dir; //源子目录 CString dst_sub_dir; //目的子目录 CString file_name; src_dir.Format("%s//%s", SrcDir, "*.*"); hfile = FindFirstFile(src_dir, &wfdata); //查找第一个文件 if(hfile == INVALID_HANDLE_VALUE) { IsOver = TRUE; } while(!IsOver) { if((wfdata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && (wfdata.cFileName[0] != ('.'))) //当前找到文件为目录 { // AfxMessageBox("目录"); dst_sub_dir.Format("%s//%s", DstDir, wfdata.cFileName); ::CreateDirectory(dst_sub_dir, NULL); src_sub_dir.Format("%s//%s", SrcDir, wfdata.cFileName); CopySrcToDst(src_sub_dir, dst_sub_dir); }else if(wfdata.cFileName[0] != ('.')) //为文件 { src_file.Format("%s//%s", SrcDir, wfdata.cFileName); file_name.Format("%s//%s", DstDir, wfdata.cFileName); CopyFile(src_file, file_name, FALSE); } IsOver = !FindNextFile(hfile, &wfdata); //查找下一个句柄 } FindClose(hfile); //关闭句柄 return TRUE; }

 

2、删除文件夹代码

 

BOOL DeleteDstDir(CString DstDir) { HANDLE hfile; //查找文件句柄 WIN32_FIND_DATA wfdata; //文件信息结构 BOOL IsOver = FALSE; CString dst_file; CString dst_dir; CString dst_sub_dir; dst_dir.Format("%s//%s", DstDir, "*.*"); hfile = FindFirstFile(dst_dir, &wfdata); //查找第一个文件 if(hfile == INVALID_HANDLE_VALUE) { IsOver = TRUE; } while(!IsOver) { if((wfdata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && (wfdata.cFileName[0] != ('.'))) //当前找到文件为目录 { dst_sub_dir.Format("%s//%s", DstDir, wfdata.cFileName); DeleteDstDir(dst_sub_dir); ::RemoveDirectory(dst_sub_dir); }else if(wfdata.cFileName[0] != ('.')) //为文件 { dst_file.Format("%s//%s", DstDir, wfdata.cFileName); DeleteFile(dst_file); } IsOver = !FindNextFile(hfile, &wfdata); //查找下一个句柄 } FindClose(hfile); //关闭句柄 return TRUE; }

 

 

 

你可能感兴趣的:(File,null,DST)