把一个盘下的文件夹(包括子文件夹)下的所有文件拷贝到另外一个盘(C#)

直接上代码:

/***

 *

 *  File类操作,Directory类操作

 *  要求:把E盘下的Test文件夹(包括子文件夹)下的所有文件拷贝到F盘

 *  思路:1 拿到F盘Test文件夹(包括子文件夹)下的所有文件的路径,并把它们存入集合SourceFilePathArray中。

 *        2  同时拿到文件夹的路径时,把路径中的E:改为F:,这样就可以在F盘创建相应的空文件夹。

 *        3 把SourceFilePathArray集合中所有路径的E:该为F:,然后进行一一对应存入另外一个集合TargetFilePathArray中。

 *        4 利用SourceFilePathArray集合中的路径为源路径,集合TargetFilePathArray中的路径为目标路径,进行一一拷贝。

 *

 */

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

 

namespace IO练习

{

    class Demo3

    {

        static void Main(string[] args)

        {

            Demo3 obj = new Demo3();

            obj.Test1();

            Console.ReadKey();

        }

 

        //源文件路径存储集合

        List<string> SourceFilePathArray = new List<string>();

        //目标文件路径存储集合

        List<string> TargetFilePathArray = new List<string>();

 

        /// <summary>

        /// 把E盘下的Test文件夹的所有文件拷贝到F盘

        /// </summary>

        internal void Test1() {

            //源文件路径

            string SourcePath = @"E:\Test";

            //目标文件路径,把E盘替换成F盘

            string TargePath = SourcePath.Replace("E:", "F:");

            GetDirName(SourcePath);

            //把源文件中集合中的文件路径改为目标文件的路径,并一一对应存入另外一个集合

            foreach (var item in SourceFilePathArray)

            {

                string  Stritem = item.Replace(SourcePath, TargePath);

                TargetFilePathArray.Add(Stritem);

            }

            //进行文件拷贝

            for (int i = 0; i < SourceFilePathArray.Count; i++)

            {

                Console.WriteLine(TargetFilePathArray[i]);

                File.Copy(SourceFilePathArray[i], TargetFilePathArray[i], true);

            }

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

        }

        

        /// <summary>

        /// 获取文件夹下的子文件夹的路径

        /// </summary>

        /// <param name="FileDir">文件夹路径</param>

        private void GetDirName(string FileDir) {

            string TargePath = FileDir.Replace("E:", "F:");

            //在F盘创建相应的文件夹,不然没法复制

            if(!Directory.Exists(TargePath)){

                Directory.CreateDirectory(TargePath);

            }

            if(Directory.Exists(FileDir)){

                //获取该文件夹下的所有文件

                GetFileName(FileDir);

                //获取该文件夹下的所有子文件夹

                string[] DirNameArray = Directory.GetDirectories(FileDir);

                foreach (var item in DirNameArray)

                {

                    if(Directory.Exists(item)){

                         //递归调用获取子文件夹的下一级文件夹

                        GetDirName(item);

                    }

                }

            }

        }

 

 

        /// <summary>

        /// 获取指定文件夹路径下的文件,并存入集合中

        /// </summary>

        /// <param name="FilePath">文件夹的路径</param>

        private void GetFileName(string FilePath)

        {

            if (Directory.Exists(FilePath))

            {

                //获取该文件夹下的所有文件名,不包括子文件夹

                string[] FileArray = Directory.GetFiles(FilePath);

                foreach (var item in FileArray)

                {

                    if (item != null)

                    {

                        //把文件名存入集合中

                        SourceFilePathArray.Add(item);

                    } 

                }

            }

 

        }

    }

}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxy2847225301

测试使用

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值