(vc6)怎么将一个文件拷贝到指定目录下的所有子文件夹中

(vc6)怎么将一个文件拷贝到指定目录下的所有子文件夹中

问题描述:

假设有一个文件a.html,需要将它发送到a目录下面的子文件夹下,a目录文件名不变,子文件夹名字每次开机会改变名字,小白一个,希望给个完整源码:能将a.html发送到指定目录下的所有子文件夹中

给你完整写了一个

void GetFilePath(CString filename, CString filetitle, CString strDir);

void CQ702697Dlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    CFileDialog dlg(TRUE);
    CString filename = "";
    CString filetitle = "";
    if (dlg.DoModal() == IDOK)
    {
        filename = dlg.GetPathName();
        filetitle = dlg.GetFileTitle() + "." + dlg.GetFileExt();
    }
    else
    {
        return;
    }
    char lpDir[301];
    XBrowseForFolder(this->m_hWnd, "C:\\", -1, "Q702697", lpDir, 300, TRUE); 
    CString dir = (CString)lpDir;
    GetFilePath(filename, filetitle, dir);

}

void GetFilePath(CString filename, CString filetitle, CString strDir)
{
    CFileFind finder;
    BOOL isNotEmpty=finder.FindFile(strDir+"*.*");
    while(isNotEmpty)
    {
        isNotEmpty=finder.FindNextFile();
        CString filename1=finder.GetFilePath();
        if(finder.IsDirectory())
        {
            if(!(finder.IsDots()||finder.IsReadOnly()))
            {
                CString newfilename = filename1+"/"+filetitle;
                CopyFile(filename, newfilename, FALSE);
                GetFilePath(filename,filetitle,filename1+"/");
            }
        }
    }
} 

下载地址:
https://download.csdn.net/download/caozhy/10723095

运行效果:
图片说明

遍历得到所有的子目录的路径,然后把文件CopyFile等复制到所有的子目录

 CFileFind Finder ;

CString strDir = DataDir ; //DataDir为要操作的文件所在目录

if( strDir.Right(1) != "\\" )

strDir += "\\" ;

strDir += "*.*" ;

bool bWorking = Finder.FindFile( strDir ) ;

while( bWorking ) 

{

bWorking = Finder.FindNextFile() ;

CString DataFile = Finder.GetFilePath() ; //GetFilePath:得到全路径名

if(finder.IsDirectory() && !finder.IsDots())    //如果是目录        {   }

else if( !Finder.IsDirectory() && !Finder.IsDots() )//不为目录

{

CString FileTitle = Finder.GetFileTitle() ;//GetFileTitle:得到不带后缀文件名

CString FileName = Finder.GetFileName(); //GetFileName:得到带后缀的文件名

//........

}

}

Finder.Close() ;

CFileFind类Find()/FileNext()

这是网上找的遍历目录中子文件的代码,不知道怎么加上复制一个文件到所有目录下的子目录,可以帮忙修改下吗
#include

#include

#include

using namespace std;

void getFiles(string path, vector& files)
{
//文件句柄

long hFile = 0;
//文件信息,声明一个存储文件信息的结构体

struct _finddata_t fileinfo;
string p;//字符串,存放路径
if ((hFile = _findfirst(p.assign(path).append("\*").c_str(), &fileinfo)) != -1)//若查找成功,则进入
{
do
{
//如果是目录,迭代之(即文件夹内还有文件夹)

if ((fileinfo.attrib & _A_SUBDIR))
{
//文件名不等于"."&&文件名不等于".."
//.表示当前目录
//..表示当前目录的父目录
//判断时,两者都要忽略,不然就无限递归跳不出去了!
if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
getFiles(p.assign(path).append("\").append(fileinfo.name), files);
}
//如果不是,加入列表

else
{
files.push_back(p.assign(path).append("\").append(fileinfo.name));
}
} while (_findnext(hFile, &fileinfo) == 0);
//_findclose函数结束查找
_findclose(hFile);
}
}

int main(){
char * filePath = "D:\a";//自己设置目录

vector files;

////获取该路径下的所有文件  
getFiles(filePath, files);

char str[30];
int size = files.size();
for (int i = 0; i < size; i++)
{
    cout << files[i].c_str() << endl;
}

}