baidu_38411250
2018-10-15 16:38
采纳率: 33.3%
浏览 1.2k

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

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • threenewbee 2018-10-16 02:26
    已采纳

    给你完整写了一个

    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

    运行效果:
    图片说明

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • oyljerry 2018-10-16 00:39

    遍历得到所有的子目录的路径,然后把文件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() ;
    
    
    评论
    解决 无用
    打赏 举报
  • Eleven 2018-10-16 07:25

    CFileFind类Find()/FileNext()

    评论
    解决 无用
    打赏 举报
  • baidu_38411250 2018-10-16 09:12

    这是网上找的遍历目录中子文件的代码,不知道怎么加上复制一个文件到所有目录下的子目录,可以帮忙修改下吗
    #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;
    }
    

    }

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题