From: konekoneko Date: Sat, 28 Jul 2012 23:33:58 +0000 (+0900) Subject: 再帰的にフォルダーネームを破壊するようにした X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=3cdc449b2e6f2e4cecbe54f24ea931706193bd29;p=completeeraser%2FCompleteEraser.git 再帰的にフォルダーネームを破壊するようにした --- diff --git a/CompleteEraser/FileBreaker.cs b/CompleteEraser/FileBreaker.cs index fe7f359..9634a36 100644 --- a/CompleteEraser/FileBreaker.cs +++ b/CompleteEraser/FileBreaker.cs @@ -84,17 +84,34 @@ namespace CompleteEraser public static void BreakFolder(string folder) { - IEnumerable files = Directory.GetFiles(folder, "*.*", SearchOption.AllDirectories); + IEnumerable files = Directory.EnumerateFiles(folder, "*.*", SearchOption.AllDirectories); foreach (string file in files) BreakFile(file); - string newName = GenerateRandoName(Path.GetDirectoryName(folder), Path.GetFileName(folder).Length); - if ((FileAccessPermissionHelper.GetCurrentAccessRule(folder).FileSystemRights & FileSystemRights.Modify) == FileSystemRights.Modify) - Directory.Move(folder, newName); - else - throw new UnauthorizedAccessException(); + IEnumerable dirs = Directory.EnumerateDirectories(folder, "*.*", SearchOption.TopDirectoryOnly); + foreach (string dir in dirs) + BreakChildFolderName(dir); + string newName = RenameFolderName(folder); Directory.Delete(newName, true); } + public static void BreakChildFolderName(string folder) + { + IEnumerable dirs = Directory.EnumerateDirectories(folder, "*.*", SearchOption.TopDirectoryOnly); + foreach (string dir in dirs) + BreakChildFolderName(dir); + RenameFolderName(folder); + } + + public static string RenameFolderName(string dir) + { + string newName = GenerateRandoName(Path.GetDirectoryName(dir), Path.GetFileName(dir).Length); + if ((FileAccessPermissionHelper.GetCurrentAccessRule(dir).FileSystemRights & FileSystemRights.Modify) == FileSystemRights.Modify) + Directory.Move(dir, newName); + else + throw new UnauthorizedAccessException(); + return newName; + } + private static string GenerateRandoName(string dirpath, int length) { string list = "abcdefghijklmnopqrstuvwxyz0123456789"; diff --git a/CompleteEraser/Properties/AssemblyInfo.cs b/CompleteEraser/Properties/AssemblyInfo.cs index d977768..53ef94d 100644 --- a/CompleteEraser/Properties/AssemblyInfo.cs +++ b/CompleteEraser/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を // 既定値にすることができます: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.13.0.0")] -[assembly: AssemblyFileVersion("1.13.0.0")] +[assembly: AssemblyVersion("1.14.0.0")] +[assembly: AssemblyFileVersion("1.14.0.0")]