首页 > 代码库 > 中国软件开发project师之痛

中国软件开发project师之痛

用C#实现文件夹拷贝

C#中没有拷贝整个文件夹的方法,最近需要用到,就写了一个Demo,拿出来跟大家分享一下

主要思想:

1、写一个拷贝文件夹的函数CopyFolder,传入源文件夹路径和目的文件夹路径

2、判断目的文件夹路径是否存在,如果不存在,创建此文件夹

3、获取源文件夹下的所有文件,拷贝这些文件到目的文件夹

4、获取源文件夹下的所有文件夹,循环调用CopyFolder(此处利用了递归)

 

代码:

 

using System;

using System.IO;

 

namespace FolderService

{

    public class FolderService

    {

        static void Main(string[] args)

        {

            if (args.Length != 2)

            {

                Console.WriteLine("请输入源文件夹地址和目的文件夹地址!");

                return;

            }

 

            // 判断源文件夹是否存在

            if (!Directory.Exists(args[0]))

            {

                Console.WriteLine("源文件夹不存在!");

                return;

            }

 

            // 拷贝文件夹

            FolderService copy = new FolderService();

            string flag = copy.CopyFolder(args[0], args[1]);

            Console.WriteLine(flag);

        }

 

        /// <summary>

        /// Copy文件夹

        /// </summary>

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

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

        /// <returns>完成状态:success-完成;其他-报错</returns>

        public string CopyFolder(string sPath, string dPath)

        {

            string flag = "success";

            try

            {

                // 创建目的文件夹

                if (!Directory.Exists(dPath))

                {

                    Directory.CreateDirectory(dPath);

                }

 

                // 拷贝文件

                DirectoryInfo sDir = new DirectoryInfo(sPath);

                FileInfo[] fileArray = sDir.GetFiles();

                foreach (FileInfo file in fileArray)

                {

                    file.CopyTo(dPath + "\\" + file.Name, true);

                }

 

                // 循环子文件夹

                DirectoryInfo dDir = new DirectoryInfo(dPath);

                DirectoryInfo[] subDirArray = sDir.GetDirectories();

                foreach (DirectoryInfo subDir in subDirArray)

                {

                    CopyFolder(subDir.FullName, dPath + "//" + subDir.Name);

                }

            }

            catch (Exception ex)

            {

                flag = ex.ToString();

            }

            return flag;

        }

    }

}

 

 

测试Dmo:

1、把代码保存为FolderService.cs,把此cs文件放到H:\Program Files\Microsoft Visual Studio 9.0\VC下(具体根据VS安装路径不同,地址有所不同)

2、打开Visual Studio Tools中的Visual Studio 2008 Command Prompt,把FolderService.cs拖到此Command Prompt中,在路径最前方加入csc+空格,回车编译此程序,如下图:

 

 

 

3、可以在目录H:\Program Files\Microsoft Visual Studio 9.0\VC中看到生成了一个FolderService.exe文件,运行此文件(打开cmd.exe,把FolderService.exe拖到cmd.exe中,加上参数,回车),如下图:

 

 

 

4、这时可以看到,E:\test目录下的文件全部都拷贝到G:\test目录下了