黑马程序员技术交流社区

标题: 如何复制文件夹 [打印本页]

作者: aynulily    时间: 2014-3-21 19:24
标题: 如何复制文件夹
本帖最后由 aynulily 于 2014-3-22 21:00 编辑

复制文件夹 包括其中的所以目录和文件 代码怎么写啊
作者: mdb    时间: 2014-3-21 19:47
我做过这个功能,在网吧没有编译工具,只说思路,不贴代码了。
一:遍历文件夹下的所有文件,然后再循环用FILE类的COPY方法复制到指定的目录,每个文件都有一个父目录,的名称,复制时查看是不是有这个目录,如果没有就创建,创建完成后再复制文件进去。
二:我原来就是用的这个方法,比较简单省事,调用XCOPY和COPY这两个系统命令,具体的参数和用法请搜索下,很简单的。
这个回答可能没分了,亏就亏在朋友这没宽带,到网吧又不能用自己的电脑,唉...
作者: Doublekill    时间: 2014-3-21 19:55
//复制文件
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--打开的路径
作者: aynulily    时间: 2014-3-22 14:07
我查了一天,写了分别用 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;
        }
作者: aynulily    时间: 2014-3-22 14:09
我怎么结束提问啊
作者: zhangcheng5468    时间: 2014-3-22 16:31
在指定路径下创建同名的目录并遍历素有文件拷贝过去就完啦~
作者: czwanglei    时间: 2014-3-22 18:35
当有人给你评论时,把你的帖子编辑为提问结束,这样,我好给你技术分啊。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2