Exemplo n.º 1
0
        /// <summary>
        /// Recursively moves a directory and all its contents into a new location.
        /// </summary>
        /// <param name="from"></param>
        /// <param name="to"></param>
        /// <returns>Number of IO errors encountered during the operation. </returns>
        public static int BOIC_RecursiveDirectoryCopy(string from, string to)
        {
            int           errc = 0;
            DirectoryInfo din  = new DirectoryInfo(from);
            DirectoryInfo dout = new DirectoryInfo(to);

            if (!din.Exists)
            {
                throw new IOException($"An attempt to copy a nonexistent directory ({from}) to {to} has occured.");
            }
            if (!dout.Exists)
            {
                Directory.CreateDirectory(to);
            }
            foreach (FileInfo fi in din.GetFiles())
            {
                try { File.Copy(fi.FullName, Path.Combine(to, fi.Name)); }
                catch (IOException ioe)
                {
                    Wood.Write("Could not copy a file during recursive copy process");
                    Wood.WriteLine(ioe, 1);
                    errc++;
                }
            }
            foreach (DirectoryInfo di in din.GetDirectories())
            {
                try { errc += BOIC_RecursiveDirectoryCopy(di.FullName, Path.Combine(to, di.Name)); }
                catch (IOException ioe)
                {
                    Wood.Write("Could not copy a subfolder during recursive copy process");
                    Wood.WriteLine(ioe, 1);
                }
            }
            return(errc);
        }