Beyond_Beyaan.BeyondBeyaan.CopyOrUpdateDirectory C# (CSharp) Метод

CopyOrUpdateDirectory() приватный статический Метод

private static CopyOrUpdateDirectory ( DirectoryInfo source, DirectoryInfo target ) : void
source System.IO.DirectoryInfo
target System.IO.DirectoryInfo
Результат void
        private static void CopyOrUpdateDirectory(DirectoryInfo source, DirectoryInfo target)
        {
            if (!target.Exists)
            {
                target.Create();
            }
            var files = target.GetFiles();
            foreach (var file in source.GetFiles())
            {
                bool fileExists = false;
                foreach (var existingFile in files)
                {
                    if (string.Compare(file.Name, existingFile.Name, StringComparison.CurrentCultureIgnoreCase) == 0)
                    {
                        //File exists, check to see if source is newer than the destination file
                        if (file.CreationTime > existingFile.CreationTime || file.LastWriteTime > existingFile.LastWriteTime)
                        {
                            //It is newer, so replace
                            file.CopyTo(Path.Combine(target.FullName, file.Name), true);
                        }
                        fileExists = true;
                        break;
                    }
                }
                if (!fileExists)
                {
                    //Didn't exist, copy over the file.
                    file.CopyTo(Path.Combine(target.FullName, file.Name));
                }
            }
            foreach (var directory in source.GetDirectories())
            {
                CopyOrUpdateDirectory(directory, new DirectoryInfo(Path.Combine(target.FullName, directory.Name)));
            }
        }