我是靠谱客的博主 合适故事,最近开发中收集的这篇文章主要介绍用C#实现目录拷贝,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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#实现目录拷贝所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部