Example #1
0
        /// <summary>
        /// Recursively copy a directory
        /// </summary>
        /// <param name="sourceDirectory"></param>
        /// <param name="targetDirectory"></param>
        /// <param name="progressCallback"> </param>
        public static ulong Copy(string sourceDirectory, string targetDirectory, CopyProcessCallback progressCallback)
        {
            var diSource = new DirectoryInfo(sourceDirectory);
            var diTarget = new DirectoryInfo(targetDirectory);

            return InternalCopy(diSource, diTarget, progressCallback);
        }
Example #2
0
        private static ulong InternalCopy(DirectoryInfo source, DirectoryInfo target, CopyProcessCallback progressCallback)
        {
            ulong bytesCopied = 0;
            // Check if the target directory exists, if not, create it.
            if (Directory.Exists(target.FullName) == false)
            {
                Directory.CreateDirectory(target.FullName);
            }

            // Copy each file into it's new directory.
            foreach (FileInfo fi in source.GetFiles())
            {
                //Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
                bytesCopied += (ulong)fi.Length;
                fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
                if (progressCallback != null)
                    progressCallback(fi.FullName);

            }

            // Copy each subdirectory using recursion.
            foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
            {
                DirectoryInfo nextTargetSubDir = target.CreateSubdirectory(diSourceSubDir.Name);
                bytesCopied += InternalCopy(diSourceSubDir, nextTargetSubDir, progressCallback);
            }

            return bytesCopied;
        }
Example #3
0
        /// <summary>
        /// Recursively copy a directory
        /// </summary>
        /// <param name="sourceDirectory"></param>
        /// <param name="targetDirectory"></param>
        /// <param name="progressCallback"> </param>
        public static ulong Copy(string sourceDirectory, string targetDirectory, CopyProcessCallback progressCallback)
        {
            var diSource = new DirectoryInfo(sourceDirectory);
            var diTarget = new DirectoryInfo(targetDirectory);

            return(InternalCopy(diSource, diTarget, progressCallback));
        }
Example #4
0
        private static ulong InternalCopy(DirectoryInfo source, DirectoryInfo target, CopyProcessCallback progressCallback)
        {
            ulong bytesCopied = 0;

            // Check if the target directory exists, if not, create it.
            if (Directory.Exists(target.FullName) == false)
            {
                Directory.CreateDirectory(target.FullName);
            }

            // Copy each file into it's new directory.
            foreach (FileInfo fi in source.GetFiles())
            {
                //Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
                bytesCopied += (ulong)fi.Length;
                fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
                if (progressCallback != null)
                {
                    progressCallback(fi.FullName);
                }
            }

            // Copy each subdirectory using recursion.
            foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
            {
                DirectoryInfo nextTargetSubDir = target.CreateSubdirectory(diSourceSubDir.Name);
                bytesCopied += InternalCopy(diSourceSubDir, nextTargetSubDir, progressCallback);
            }

            return(bytesCopied);
        }