/// <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); }