OSDN Git Service

再帰的にフォルダーネームを破壊するようにした
authorkonekoneko <jbh03215@gmail.com>
Sat, 28 Jul 2012 23:33:58 +0000 (08:33 +0900)
committerkonekoneko <jbh03215@gmail.com>
Sat, 28 Jul 2012 23:33:58 +0000 (08:33 +0900)
CompleteEraser/FileBreaker.cs
CompleteEraser/Properties/AssemblyInfo.cs

index fe7f359..9634a36 100644 (file)
@@ -84,17 +84,34 @@ namespace CompleteEraser
 \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
index d977768..53ef94d 100644 (file)
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を \r
 // 既定値にすることができます:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("1.13.0.0")]\r
-[assembly: AssemblyFileVersion("1.13.0.0")]\r
+[assembly: AssemblyVersion("1.14.0.0")]\r
+[assembly: AssemblyFileVersion("1.14.0.0")]\r