From 3cdc449b2e6f2e4cecbe54f24ea931706193bd29 Mon Sep 17 00:00:00 2001 From: konekoneko Date: Sun, 29 Jul 2012 08:33:58 +0900 Subject: [PATCH] =?utf8?q?=E5=86=8D=E5=B8=B0=E7=9A=84=E3=81=AB=E3=83=95?= =?utf8?q?=E3=82=A9=E3=83=AB=E3=83=80=E3=83=BC=E3=83=8D=E3=83=BC=E3=83=A0?= =?utf8?q?=E3=82=92=E7=A0=B4=E5=A3=8A=E3=81=99=E3=82=8B=E3=82=88=E3=81=86?= =?utf8?q?=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- CompleteEraser/FileBreaker.cs | 29 +++++++++++++++++++++++------ CompleteEraser/Properties/AssemblyInfo.cs | 4 ++-- 2 files changed, 25 insertions(+), 8 deletions(-) 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")] -- 2.11.0