-6

これを使用して、再帰を使用して、いくつかのディレクトリにある特定のすべての .htm ファイルを削除しようとしています。これまでのところ、1 つのフォルダーだけで問題なく動作しますが、コードに複数のフォルダーを追加する方法を見つけることができませんでした。別のディレクトリ内のファイルを削除するたびにコードを変更し続ける必要がないように、ディレクトリ パスにさらにディレクトリを追加する方法はありますか?

namespace ConsoleApplication
{
    class Deleter
    {
        static void Main(string[] args)
        {
            string directorypath = @"C:\Public\";
            string[] directories = System.IO.Directory.GetDirectories(directorypath);
            DeleteDirectories(directories);
        }
        private static void DeleteDirectories(string[] directories)
        {
            foreach (string directory in directories)
            {
                string[] files = System.IO.Directory.GetFiles(directory, "*.htm");
                DeleteFiles(files);
                directories = System.IO.Directory.GetDirectories(directory);
                DeleteDirectories(directories);
            }
        }
        private static void DeleteFiles(string[] files)
        {
            foreach (string file in files)
            {
                FileInfo f = new FileInfo(file);
                if (f.CreationTime < DateTime.Now)
                    f.Delete();
            }
        }
    }
}
4

1 に答える 1

1

列挙可能な (ディレクトリ) をサブディレクトリに設定してそのように再帰することを期待するのではなく、subDirectories という名前の新しい参照を作成します。したがって、foreach ループは次のようになります。

...
foreach(var directory in directories)
{
 string[] files = System.IO.Directory.GetFiles(directory, "*.htm");
 DeleteFiles(files);
 var subDirectories = System.IO.Directory.GetDirectories(directory); 
 DeleteDirectories(directories);
{
....
于 2012-06-06T18:07:29.157 に答える