-6

我正在尝试使用它来删除我使用递归的几个目录中某些特定的所有 .htm 文件。到目前为止,它只适用于一个文件夹,但我还没有找到一种方法将多个文件夹添加到代码中。有什么办法可以将更多目录添加到目录路径中,这样我就不必在每次希望它删除另一个目录中的文件时都不断更改代码?

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 回答