A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© aynulily 中级黑马   /  2014-3-21 19:24  /  1592 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 aynulily 于 2014-3-22 21:00 编辑

复制文件夹 包括其中的所以目录和文件 代码怎么写啊

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

6 个回复

倒序浏览
我做过这个功能,在网吧没有编译工具,只说思路,不贴代码了。
一:遍历文件夹下的所有文件,然后再循环用FILE类的COPY方法复制到指定的目录,每个文件都有一个父目录,的名称,复制时查看是不是有这个目录,如果没有就创建,创建完成后再复制文件进去。
二:我原来就是用的这个方法,比较简单省事,调用XCOPY和COPY这两个系统命令,具体的参数和用法请搜索下,很简单的。
这个回答可能没分了,亏就亏在朋友这没宽带,到网吧又不能用自己的电脑,唉...

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
//复制文件
File.Copy(@"D:\详细报表.txt",@"E:\详细报表.txt");


Exists--文件是否存在
例如:
      string despath = @"D:\详细报表.txt";
            if (File.Exists(despath))
            {
                //目标文件已存在
                if (MessageBox.Show("目标文件已存在,是否覆盖?", "询问",                 MessageBoxButtons.YesNo, MessageBoxIcon.Question)                 ==DialogResult.Yes)              
                {
                    //要覆盖
                    //复制文件
                    File.Copy(@"D:\详细报表.txt",despath, true);
                    MessageBox.Show("文件已被覆盖!");
                }
            }

openFileDialog--打开的路径

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
我查了一天,写了分别用 FileInfo和File的两种,不过大致是一样的




static bool CopyDir(string fromdic,string todic)
        {
            bool flag = false;
            DirectoryInfo fromDic = new DirectoryInfo(fromdic);
            try
            {
                if (!Directory .Exists (todic ))
                {
                    Directory.CreateDirectory(todic );
                }
                 
                foreach (FileInfo  file in fromDic .GetFiles ())
                {
                    file.CopyTo(todic  +"\\"+file .Name ,true );//允许覆盖现有文件
                }
               
                foreach (DirectoryInfo  subDir in fromDic .GetDirectories () )
                {
                    CopyDir(subDir.FullName  ,todic +"\\"+subDir .Name );
                }
                flag = true;
                 
            }
            catch (Exception)
            {
               
                throw;
               
            }

            return flag;
        }




另一个



static bool CopyDir(string fromdic,string todic)
        {
            bool flag = false;
            if (!Directory .Exists (todic ))
            {
                Directory.CreateDirectory(todic );
            }
            //复制所有文件
            foreach (string  filename in Directory.GetFiles(fromdic ) )
            {
                File.Copy(filename,todic+"\\"+Path .GetFileName (filename ),true );
            }
            //复制所有子文件夹(递归)
            foreach (string  subdic in Directory .GetDirectories (fromdic ))
            {
                CopyDir(subdic ,todic +"\\"+Path .GetFileName (todic ));
               
            }
            flag = true;
            return flag;
        }

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
我怎么结束提问啊
回复 使用道具 举报
在指定路径下创建同名的目录并遍历素有文件拷贝过去就完啦~
回复 使用道具 举报
当有人给你评论时,把你的帖子编辑为提问结束,这样,我好给你技术分啊。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马