Пример #1
0
        /// <summary>
        /// Copies a directory
        /// </summary>
        /// <param name="CopyFrom">Source and Destination</param>
        public static void Copy(DirCopyInfo CopyFrom)
        {
            DirCopyInfo Info = CopyFrom;

            if (!Directory.Exists(Info.Source))
            {
                throw new FileNotFoundException();
            }
            if (!Directory.Exists(Info.Destination))
            {
                //Console.WriteLine("Creating Directory: " + Info.Destination);
                Directory.CreateDirectory(Info.Destination);
            }
            string[] DirFiles;
            string[] DirDirs;
            try
            {
                DirFiles = Directory.GetFiles(Info.Source);
                DirDirs  = Directory.GetDirectories(Info.Source);
            }
            catch { throw new FileNotFoundException(); }
            foreach (string SingleDir in DirDirs)
            {
                string DirName = "\\";
                DirName += SingleDir.Split('\\')[SingleDir.Split('\\').Length - 1];
                DirCopyInfo NextInfo = new DirCopyInfo();
                NextInfo.BaseDir     = Info.BaseDir;
                NextInfo.Destination = Info.Destination + DirName;
                NextInfo.Source      = SingleDir;
                Copy(NextInfo);
            }
            foreach (string SingleFile in DirFiles)
            {
                try
                {
                    string FileName = SingleFile.Split('\\')[SingleFile.Split('\\').Length - 1];
                    File.Copy(SingleFile, Info.Destination + "\\" + FileName, Info.OverWrite);
                }
                catch { return; }
            }
        }
Пример #2
0
 /// <summary>
 /// Starts a Directory copy operation in another thread
 /// </summary>
 /// <param name="CopyFrom">Source and Destination</param>
 public static void BeginAsyncCopy(DirCopyInfo CopyFrom)
 {
     System.Threading.Thread Worker = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(ThreadCopy));
     CopyFrom.BaseDir = CopyFrom.Source;
     Worker.Start((object)CopyFrom);
 }