此例实现将一个文件夹下的txt文件复制到目标文件夹。方法是遍历源文件夹,如果是txt文件,则进行拷贝。实例代码如下:
点击展开示例代码
int CTestCSDNDlg::CopyFileEx( CString strSrcPath, CString strExt, CString strDesPath )
{
CFileFind ff;
CString szDir = strSrcPath;
CString strSize = _T("");
if(szDir.Right(1) != "\\")
szDir += "\\";
szDir += "*.*";
BOOL res = ff.FindFile(szDir);
while(res)
{
res = ff.FindNextFile();
if(ff.IsDirectory() && !ff.IsDots()) // 文件夹
{
CString strFolderPath = ff.GetFilePath();
CopyFileEx(strFolderPath, strExt, strDesPath);
}
else if(!ff.IsDirectory() && !ff.IsDots()) // 文件
{
// 判断扩展名
CString strFileName = ff.GetFileName();
int nPos;
nPos = strFileName.ReverseFind( _T( ''.'' ) );
CString strFileExt;
strFileExt = strFileName.Right( strFileName.GetLength() - nPos - 1 );
if ( strFileExt == strExt )
{
// 复制文件
CString strFilePath;
strFilePath = ff.GetFilePath();
CString strNewFilePath;
strNewFilePath = strDesPath + _T( "\\" ) + strFileName;
::CopyFile( strFilePath, strNewFilePath, FALSE );
}
}
}
ff.Close();
return 0;
}使用方法:
CopyFileEx( _T( "E:\\test" ), _T( "txt" ), _T( "E:\\test 2" ) );
第一个参数:源路径
第二个参数:扩展名
第三个参数:目的路径
如果拷贝包括子文件夹,则使用下面的方法:
修改此段代码:
if(ff.IsDirectory() && !ff.IsDots()) // 文件夹
{
CString strFolderPath = ff.GetFilePath();
CString strFolderName = ff.GetFileName();
CString strDestSubFolder = strDesPath + _T( "\\" ) + strFolderName;
CreateDirectory( strDestSubFolder, NULL );
CopyFileEx(strFolderPath, strExt, strDestSubFolder );
}