public class FileManager { //复制目录树 public static void CopyDirectory(string srcDir, string tgtDir) { DirectoryInfo source = new DirectoryInfo(srcDir); DirectoryInfo target = new DirectoryInfo(tgtDir); if (target.FullName.StartsWith(source.FullName, StringComparison.CurrentCultureIgnoreCase)) { throw new Exception("父目录不能拷贝到子目录!"); } if (!source.Exists) { return; } if (!target.Exists) { target.Create(); } FileInfo[] files = source.GetFiles(); for (int i = 0; i < files.Length; i++) { File.Copy(files[i].FullName, target.FullName + @"/" + files[i].Name, true); } DirectoryInfo[] dirs = source.GetDirectories(); for (int j = 0; j < dirs.Length; j++) { CopyDirectory(dirs[j].FullName, target.FullName + @"/" + dirs[j].Name); } } //删除目录树 public static void DeleteFolder(string dir) { foreach (string d in Directory.GetFileSystemEntries(dir)) { if (File.Exists(d)) { FileInfo fi = new FileInfo(d); if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1) fi.Attributes = FileAttributes.Normal; File.Delete(d);//直接删除其中的文件 } else DeleteFolder(d);//递归删除子文件夹 } Directory.Delete(dir);//删除已空文件夹 } //删除目录树(第二种方法) private void DeleteDir(string path) { if (path.Trim() == "" || !Directory.Exists(path)) return; DirectoryInfo dirInfo = new DirectoryInfo(path); FileInfo[] fileInfos = dirInfo.GetFiles(); if (fileInfos != null && fileInfos.Length > 0) { foreach (FileInfo fileInfo in fileInfos) { //DateTime.Compare( fileInfo.LastWriteTime,DateTime.Now); File.Delete(fileInfo.FullName); //删除文件 } } DirectoryInfo[] dirInfos = dirInfo.GetDirectories(); if (dirInfos != null && dirInfos.Length > 0) { foreach (DirectoryInfo childDirInfo in dirInfos) { this.DeleteDir(childDirInfo.FullName); //递归 } } Directory.Delete(dirInfo.FullName, true); //删除目录 } } 删除目录树可以直接调用 Directory.Delete (String, true);