找到所有文件拷贝,怎么对一个文件进行拷贝

解决方案 »

  1.   

    1)《深入浅出MFC》上有侯sir的例子
    2)可以使用findfirstfile等查找
      

  2.   

    这里有两个例子,是用来查找文件的void FindFile(CString &strTemp)
    {
        WIN32_FIND_DATA fd;
        //::SetCurrentDirectory(strTemp);    HANDLE hFind = ::FindFirstFile("*.*", &fd);
        if(hFind != INVALID_HANDLE_VALUE)
        {
            do
            {
                if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                {
                    CString name = fd.cFileName;
                    if(name != _T(".") && name != _T(".."))
                    {
                        strTemp += _T("\\") + name;
                        ::SetCurrentDirectory(strTemp);
                        FindFile(strTemp);
                        ::SetCurrentDirectory(_T(".."));
                        TCHAR szCurDir[MAX_PATH];
                        ::GetCurrentDirectory(sizeof(szCurDir) / sizeof (TCHAR), szCurDir);
                        strTemp = szCurDir;
                    }
                }
                else
                {
                    CString strExt = GetExt(fd.cFileName);
                    if(m_lExt.Find(strExt))
                        AddToListCtrl(strTemp + _T("\\") + fd.cFileName, strExt);
                }        }while(::FindNextFile(hFind, &fd));        ::FindClose(hFind);
        }
    } --------------------------------------------------
    用api函数FindFirstFile和FindNextFile函数可以遍历一个目录下的文件和子目录,用递归可以找全所有子目录。hSearch = FindFirstFile("*.txt", &FileData); 
    if (hSearch == INVALID_HANDLE_VALUE) 

        ErrorHandler("No .TXT files found."); 

     
    // Copy each .TXT file to the new directory 
    // and change it to read only, if not already. 
     
    while (!fFinished) 

        lstrcpy(szNewPath, szDirPath); 
        lstrcat(szNewPath, FileData.cFileName); 
        if (CopyFile(FileData.cFileName, szNewPath, FALSE))
        { 
            dwAttrs = GetFileAttributes(FileData.cFileName); 
            if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) 
            { 
                SetFileAttributes(szNewPath, 
                    dwAttrs | FILE_ATTRIBUTE_READONLY); 
            } 
        } 
        else 
        { 
            ErrorHandler("Couldn't copy file."); 
        } 
     
        if (!FindNextFile(hSearch, &FileData)) 
        {
            if (GetLastError() == ERROR_NO_MORE_FILES) 
            { 
                MessageBox(hwnd, "No more .TXT files.", 
                    "Search completed.", MB_OK); 
                fFinished = TRUE; 
            } 
            else 
            { 
                ErrorHandler("Couldn't find next file."); 
            } 
        }

     
    // Close the search handle. 
     
    if (!FindClose(hSearch)) 

        ErrorHandler("Couldn't close search handle."); 

      

  3.   

    看MSDN   有个SH开头的函数可以删除、移动、复制一个文件夹中的全部或部分文件
      

  4.   

    SHFileOperation,包含shellapi.h,可以对整个目录删除、移动、复制
      

  5.   

    怎么用SHFileOperation老是不成功,我要生成新目录