[愚翁专栏]用C#实现目录拷贝

转载 2006年05月18日 19:52:00

C#中没有直接的目录拷贝函数,所以需要遍历源目录,然后逐个目录和逐个文件进行拷贝。以下就是实现代码:

        /// <summary>

        /// Copy files from souce directory to dest directory

        /// </summary>

        /// <param name="SourceDir"></param>

        /// <param name="DestDir"></param>

        /// <returns></returns>

        private bool CopyFilesExt( string SourceDir, string DestDir )

        {

            string[] FileNames = Directory.GetFiles(SourceDir);

           

            // Copy files into dest dir

            // If file exists, then overwrite

            for(int i = 0; i < FileNames.Length; i++ )

                File.Copy( FileNames[i],

                    DestDir + FileNames[i].Substring( SourceDir.Length ), true );

            return true;

        }

 

        /// <summary>

        /// Copy sub-directories and files from directory to dest directory

        /// </summary>

        /// <param name="SourceDir"></param>

        /// <param name="DestDir"></param>

        /// <returns></returns>

        private bool CopyDirExt( string SourceDir, string DestDir )

        {

            DirectoryInfo diSource = new DirectoryInfo( SourceDir );

            DirectoryInfo diDest = new DirectoryInfo( DestDir );

            if( diSource.Exists )

            {

                // If dest directory doesn't exist, then create it;

                if( !diDest.Exists )

                    diDest.Create();

 

                // Copy files from source directory to dest directory

                if( CopyFilesExt( SourceDir, DestDir ) )

                {

                    string[] SubDirs = Directory.GetDirectories( SourceDir );

                    bool bResult = true;

 

                    // Copy sub-directories

                    for( int i = 0; i < SubDirs.Length; i++ )

                        if( !CopyDir( SubDirs[i] + @"/",

                            DestDir + SubDirs[i].Substring( SourceDir.Length ) + @"/" ) )

                            bResult = false;

 

                    return bResult;

                }

            }

            return false;

        }

 

       调用如下即可:

            strSourceDir = txtSourceDir.Text;

            strDestDir = txtDestDir.Text;

            if( strSourceDir[strSourceDir.Length-1] != '//' )

                strSourceDir += @"/";

            if( strDestDir[strDestDir.Length-1] != '//' )

                strDestDir += @"/";

 

            if( !CopyDirExt( strSourceDir, strDestDir ) )

                MessageBox.Show( "Directory copied failed!" );

            else

                MessageBox.Show( "Directory copied successfully!" );

 

       注意,我的CopyDirExt函数中的目录,是以“/”结束,因此要调用之前,需要根据需要进行补加字符“/”。


相关文章推荐

C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件....

C#追加文件     StreamWriter sw = File.AppendText(Server.MapPath(".")+"//myText.txt");     sw.WriteLine...

C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名

转载自: http://www.cnblogs.com/JKqingxinfeng/archive/2012/12/14/2818137.html 本文也收集了目前最为常用的C#经典...

C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件

本文收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件、指定文件夹下 面的所有内容copy到目标文件夹下面、指定文件夹下面的所有内...
  • sscsgss
  • sscsgss
  • 2011年10月24日 16:54
  • 343

【转载】C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件....

本文收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件、指定文件夹下 面的所有内容copy到目标文件夹下面、指定文件夹下面的所有内...

php实现整个目录拷贝(使用for循环)

php代码:需要命名为copy_mulu.php,要填写表单 set_time_limit(0);//获取目录名函数定义开始function mulu_name($path){if(substr($p...
  • wxhlxx
  • wxhlxx
  • 2011年07月09日 20:34
  • 1722

Java 实现目录拷贝

public class DirectoryCopy { public static void main(String[] args) throws IOException { File sou...

python实现文件夹目录拷贝

需求:复制1个10多个G的文件夹(另外机器共享过来的文件夹,里面含有约10w个文件)到本机一个目录(另外那台机器磁盘满了的原因)  使用windows的文件夹复制,发现经常在复制一部分文件后,因...

Linux系统编程---实现目录或者文件拷贝

关于拷贝文件,前面写过一个例子:点击打开链接 ,可以看看,实现cp命令。这次我们实现一个目录和文件的拷贝,综合点。#include #include #include #include #i...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[愚翁专栏]用C#实现目录拷贝
举报原因:
原因补充:

(最多只允许输入30个字)