示例#1
0
        public string CopyDirectory(DirectoryInfo source, DirectoryInfo target)
        {
            try
            {
                if (source.FullName.ToLower() == target.FullName.ToLower())
                {
                    return("Same directory");
                }

                if (Directory.Exists(target.FullName) == false)
                {
                    Directory.CreateDirectory(target.FullName);
                }

                foreach (FileInfo fi in source.GetFiles())
                {
                    FileUpdate?.Invoke(string.Format(@"Copying {0}\{1}.", target.FullName, fi.Name));
                    fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
                    FileUpdate?.Invoke(string.Format(@"Copied {0}\{1} successfully.", target.FullName, fi.Name));
                }

                foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
                {
                    DirectoryInfo nextTargetSubDir =
                        target.CreateSubdirectory(diSourceSubDir.Name);
                    CopyDirectory(diSourceSubDir, nextTargetSubDir);
                }


                return("Success");
            }
            catch (Exception ex)
            {
                FileUpdate?.Invoke(ex.Message);
                return("Error");
            }
        }