C#通过递归实现文件及文件夹拷贝

C#通过递归实现文件及文件夹拷贝,第1张

概述C#通过递归实现文件及文件夹拷贝

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

         //获得长路径的相对短路径名称        [Dllimport("kernel32.dll",CharSet = CharSet.auto)]        public static extern uint GetShortPathname(string lpszLongPath,StringBuilder lpszShortPath,int cchBuffer);        //实现文件拷贝,递归逐文件拷贝        private voID Directorycopy(string sourceDir,string targetDir)        {                          if (!Directory.Exists(sourceDir))            {                DialogResult OKbuttonDown = MessageBox.Show("需要备份的路径不存在,请查看!","备份失败",MessageBoxbuttons.OK,MessageBoxIcon.Warning);                if (DialogResult.OK == OKbuttonDown)                {                    Application.Exit();                }            }                         string sourceFoldername = sourceDir.Replace(Directory.GetParent(sourceDir).ToString(),"").Replace(Path.DirectorySeparatorChar.ToString(),"");             if (sourceDir == targetDir + sourceFoldername)            {                DialogResult OKbuttonDown = MessageBox.Show("备份的目标路径和原路径相同,不需要备份!",MessageBoxIcon.Warning);                if (DialogResult.OK == OKbuttonDown)                {                    Application.Exit();                }              }             //得到要复制到的路径            string tagetPath = targetDir + Path.DirectorySeparatorChar.ToString() + sourceFoldername;              //检查目标路径            if (Directory.Exists(tagetPath))            {                DialogResult OKbuttonDown = MessageBox.Show("备份的目标路径已经存在,点击是将删除目标并备份,点击否将覆盖并备份","请查看",MessageBoxbuttons.YesNoCancel,MessageBoxIcon.Warning);                if (DialogResult.Yes == OKbuttonDown)                {                    Directory.Delete(tagetPath,true);                    //return;                }                else if (DialogResult.No == OKbuttonDown)                {                    //复制文件                    string[] files1 = Directory.Getfiles(sourceDir);                    for (int i = 0; i < files1.Length; i++)                    {                         file.copy(files1[i],tagetPath + Path.DirectorySeparatorChar.ToString() + Path.Getfilename(files1[i]),true);                    }                    //复制目录                    string[] dires1 = Directory.GetDirectorIEs(sourceDir);                    for (int j = 0; j < dires1.Length; j++)                    {                        Directorycopy(dires1[j],tagetPath);                    }                    return;                }                else if (DialogResult.Cancel == OKbuttonDown)                {                    Application.Exit();                 }             }                        StringBuilder _shortPath1 = new StringBuilder(255);            uint result1 = GetShortPathname(tagetPath,_shortPath1,255);            string MyShortPath1 = _shortPath1.ToString();            if (0 == result1)            {                Directory.CreateDirectory(tagetPath);            }            else            {                Directory.CreateDirectory(MyShortPath1);            }            //复制文件            string[] files3 = Directory.Getfiles(sourceDir);            for (int i = 0; i < files3.Length; i++)            {                //string longPath = tagetPath + Path.DirectorySeparatorChar.ToString() + Path.Getfilename(files3[i]);                //StringBuilder _shortPath = new StringBuilder(255);                //uint result = GetShortPathname(longPath,_shortPath,255);                //string MyShortPath = _shortPath.ToString();                file.copy(files3[i],/*MyShortPath/tagetPath + Path.DirectorySeparatorChar.ToString() + Path.Getfilename(files3[i]),true);            }            //复制目录            string[] dires3 = Directory.GetDirectorIEs(sourceDir);            for (int j = 0; j < dires3.Length; j++)            {                string longPath = dires3[j];                StringBuilder _shortPath = new StringBuilder(255);                uint result = GetShortPathname(longPath,255);                string MyShortPath = _shortPath.ToString();                 Directorycopy(MyShortPath,tagetPath);            }        }

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的C#通过递归实现文件及文件夹拷贝全部内容,希望文章能够帮你解决C#通过递归实现文件及文件夹拷贝所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1238005.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存