c#复制文件夹

C#封装的Directory类自带的的Move方法不是很好用,如果要移动到的新目录是已经存在的就不能使用了,而且用Dircotry的move方法 不能移动到不同的卷标下面,只能在相同的目录下移动。今天尝试着自己写了个拷贝文件夹目录的方法,具体代码如下:

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            //源目录

            string sourceDirectory = @"E:\\Program";

           

            //目标目录

            string destDirectory = @"E:\\Test";

            //拷贝目录

            copyDirectory(sourceDirectory, destDirectory);

            Console.WriteLine("拷贝完毕");

            Console.ReadLine();

        }

        public static void copyDirectory(string sourceDirectory, string destDirectory)

        {

            //判断源目录和目标目录是否存在,如果不存在,则创建一个目录

            if (!Directory.Exists(sourceDirectory))

            {

                Directory.CreateDirectory(sourceDirectory);

            }

            if (!Directory.Exists(destDirectory))

            {

                Directory.CreateDirectory(destDirectory);

            }

            //拷贝文件

            copyFile(sourceDirectory, destDirectory);

           

            //拷贝子目录       

            //获取所有子目录名称

            string[] directionName = Directory.GetDirectories(sourceDirectory);

           

            foreach (string directionPath in directionName)

            {

                //根据每个子目录名称生成对应的目标子目录名称

                string directionPathTemp = destDirectory + "\\" + directionPath.Substring(sourceDirectory.Length + 1);

               

                //递归下去

                copyDirectory(directionPath, directionPathTemp);

            }                     

        }

        public static void copyFile(string sourceDirectory, string destDirectory)

        {

            //获取所有文件名称

            string[] fileName = Directory.GetFiles(sourceDirectory);

           

            foreach (string filePath in fileName)

            {

                //根据每个文件名称生成对应的目标文件名称

                string filePathTemp = destDirectory + "\\" + filePath.Substring(sourceDirectory.Length + 1);

               

                //若不存在,直接复制文件;若存在,覆盖复制

                if (File.Exists(filePathTemp))

                {

                    File.Copy(filePath, filePathTemp, true);

                }

                else

                {

                    File.Copy(filePath, filePathTemp);

                }

            }

        }    

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值