\r
public static void BreakFolder(string folder)\r
{\r
- IEnumerable<string> files = Directory.GetFiles(folder, "*.*", SearchOption.AllDirectories);\r
+ IEnumerable<string> files = Directory.EnumerateFiles(folder, "*.*", SearchOption.AllDirectories);\r
foreach (string file in files)\r
BreakFile(file);\r
- string newName = GenerateRandoName(Path.GetDirectoryName(folder), Path.GetFileName(folder).Length);\r
- if ((FileAccessPermissionHelper.GetCurrentAccessRule(folder).FileSystemRights & FileSystemRights.Modify) == FileSystemRights.Modify)\r
- Directory.Move(folder, newName);\r
- else\r
- throw new UnauthorizedAccessException();\r
+ IEnumerable<string> dirs = Directory.EnumerateDirectories(folder, "*.*", SearchOption.TopDirectoryOnly);\r
+ foreach (string dir in dirs)\r
+ BreakChildFolderName(dir);\r
+ string newName = RenameFolderName(folder);\r
Directory.Delete(newName, true);\r
}\r
\r
+ public static void BreakChildFolderName(string folder)\r
+ {\r
+ IEnumerable<string> dirs = Directory.EnumerateDirectories(folder, "*.*", SearchOption.TopDirectoryOnly);\r
+ foreach (string dir in dirs)\r
+ BreakChildFolderName(dir);\r
+ RenameFolderName(folder);\r
+ }\r
+\r
+ public static string RenameFolderName(string dir)\r
+ {\r
+ string newName = GenerateRandoName(Path.GetDirectoryName(dir), Path.GetFileName(dir).Length);\r
+ if ((FileAccessPermissionHelper.GetCurrentAccessRule(dir).FileSystemRights & FileSystemRights.Modify) == FileSystemRights.Modify)\r
+ Directory.Move(dir, newName);\r
+ else\r
+ throw new UnauthorizedAccessException();\r
+ return newName;\r
+ }\r
+ \r
private static string GenerateRandoName(string dirpath, int length)\r
{\r
string list = "abcdefghijklmnopqrstuvwxyz0123456789";\r