コピーC#実装ファイルとディレクトリを置き換え

コードは、多くの場合、プロジェクトのもう一つの特徴とプロジェクトの特定の部分の特定の部分に発生した、このような場合には、しばしば遭遇状況がコードを移動、同じであり、私は自動的に移動するために、このようなAツールの必要性を感じました

それは私が両方のファイルやディレクトリをコピーすることができますが、ことがわかった、C#に焦点を当て、それそれは最初の移動または手動を移動するのがベストですので、TFSまたはその他のソースコード管理ツールは自動的に、一緒に行かないことがありそれは、プロジェクト全体は、いくつかの新しいの場合です。

参考のために以下のコアコード:

オブジェクトコードディレクトリ、itemListの:この方法は、ルート源泉は、ソース、ターゲットであることを特徴と本体のコピーであり、元のファイルまたはディレクトリのルートパスに対して

プライベート 静的 無効 CopyConstant(文字列のソース、文字列のターゲットは、List < 文字列 > itemListの)
        { 

            一覧 <CopyItemDto> listItemの= 新しいリスト<CopyItemDto> ();
            foreachのVARの項目itemListの)
            { 
                listItem.Add(CopyItemDto()
                { 
                    RelativePath = 項目、
                    SourceAddress + =ソース@ " \ " +項目、
                    のTargetAddress =ターゲット+ @ " \ " + アイテム、
                }); 
            } 

            VARのインデックス= 1 

            foreachのVARの項目listItemの)
            { 
                Console.WriteLineを(文字列 .Format(" {0}开始コピー:{1}、({2} / {3})"、DateTime.Now.ToString(YYYY-MM-DD HH:MM:SS " )、item.RelativePath、インデックス、listItem.Count)); 

                もし(File.Exists(item.SourceAddress)) 
                {
                    CopyFileOnly(item.SourceAddress、item.TargetAddress)。
                } 
                
                { 
                    copyDirectory(item.SourceAddress、item.TargetAddress)。
                } 

                Console.WriteLineを(文字列 .Format(" {0}结束コピー:{1} "、DateTime.Now.ToString(" YYYY-MM-DD HH:MM:SS " )、item.RelativePath))。
                インデックス ++ ; 
            } 
        }

これは、前記CopyFileOnly方法を意味します

        パブリック 静的 ボイド CopyFileOnly(文字列源泉、文字列ターゲット)
        { 
            System.IO.FileInfoファイル = 新規のFileInfo(源泉)。

            ストリング destDirectoryFullName = target.Replace(file.Name、"" );
            もし(!System.IO.Directory.Exists(destDirectoryFullName))
            { 
                System.IO.Directory.CreateDirectory(destDirectoryFullName)。
            } 

            file.CopyTo(ターゲット、)。
        }

copyDirectory

        パブリック 静的 ボイド copyDirectory(文字列 SPATH、ストリングDPATH)
        { 
            文字列 []ディレクトリ= System.IO.Directory.GetDirectories(SPATH)。
            もし(!System.IO.Directory.Exists(DPATH))
            { 
                System.IO.Directory.CreateDirectory(DPATH)。
            } 

            System.IO.DirectoryInfo DIR = 新しいSystem.IO.DirectoryInfo(SPATH)。
            System.IO.DirectoryInfo [] DIRS = dir.GetDirectories()。
            CopyFileメソッド(DIR、DPATH)。
            もし(dirs.Length> 0
            { 
                foreachの(System.IO.DirectoryInfo temDirectoryInfo DIRS)
                { 
                    ストリング sourceDirectoryFullName = temDirectoryInfo.FullName。
                    ストリング destDirectoryFullName = sourceDirectoryFullName.Replace(SPATH、DPATH)。
                    もし(!System.IO.Directory.Exists(destDirectoryFullName))
                    { 
                        System.IO.Directory.CreateDirectory(destDirectoryFullName)。
                    } 
                    CopyFileメソッド(temDirectoryInfo、destDirectoryFullName)。
                    copyDirectory(sourceDirectoryFullName、destDirectoryFullName)。
                }  
            }

        }

CopyFileメソッド

        ///  <要約> 
        /// コピー先のディレクトリにディレクトリ内のすべてのファイル。
        ///  </要約> 
        ///  <PARAM> ソースパス</ PARAM> 
        ///  <PARAM> オブジェクト経路</ PARAM> 
        パブリック 静的 ボイド CopyFileメソッド(System.IO.DirectoryInfoパス、文字列desPath)
        { 
            文字列 sourcePathは= path.FullName; 
            System.IO.FileInfoための[]ファイル = path.GetFiles();
             foreachの(ファイルのSystem.IO.FileInfo におけるファイル)
            { 
                文字列 sourceFileFullName = file.FullName。
                ストリング destFileFullName = sourceFileFullName.Replace(sourcePathは、desPath)。
                file.CopyTo(destFileFullName、真の); 
            } 
        }

 

おすすめ

転載: www.cnblogs.com/tianxue/p/12128412.html