在一个文件夹中获取文件,在另一个文件夹中?

Get files within a folder, within another folder?

我正在尝试为自己创建一个迷你工具来检查目录“C:\Logs

C:\Logs 中,我有很多随机名称的文件夹。我希望能够检查 C:\Logs 中的所有文件夹,并在这些文件夹中检查创建日期是否过时,以便我可以通过编程方式删除它们。

这是我目前所知道的...

Try
    Dim CreatedDate As DateTime
    Dim Todays_Date As DateTime = Today.Date
    Dim DirInfo As DirectoryInfo
    Dim Time_Span As TimeSpan
    Dim DirList As New List(Of String)

    For Each SubDir As String In Directory.GetDirectories("C:\Logs")
        DirInfo = New DirectoryInfo(SubDir)
        CreatedDate = DirInfo.CreationTimeUtc

        Time_Span = Todays_Date - CreatedDate

        If Time_Span .Days > 10 Then
          DirList .Add(SubDir)
          DirInfo.Delete(True)
        Else
          'No Dir found or Dir is not  > 10
        End If
    Next
End Try

这当前从 C:\Logs 中获取所有文件夹,并删除超过 10 天的任何 文件夹。但是,我只想删除 C:\Logs\ ****

中的 FILES

因为我有一个来自 C:\ 的文件夹列表,通过 :

For Each SubDir As String In Directory.GetDirectories("C:\Logs")

我是否必须执行类似的操作才能获取这些文件夹中的所有文件?

        For Each SubFile As String In Directory.GetFiles(SubDir)
            'Check date of each file and delete if older than 10 days?
        Next

你走在正确的轨道上你建议的内部循环是正确的你还需要的一件事是FileInfoclass它可以获取关于文件的元数据并且你做的和你做的一样文件夹。

Sub TestIO()
    Dim fld As New DirectoryInfo("C:\Logs")
    fld.EnumerateFiles().
        Where(Function(f) (Date.Now - f.CreationTimeUtc) > TimeSpan.FromDays(10)).
        ToList().
        ForEach(Sub(f) f.Delete())
End Sub

更新

要摆脱 ToList 调用以使用方便的 ForEach 方法,您可以添加可直接与 IEnumerable 一起使用的扩展方法(这在 .NET Framework 中很受欢迎)。此扩展方法如下所示:

public static class ExtensionMethods
{
    public static void ForEach<T>(this IEnumerable<T> enumerable, Action<T> action)
    {
        if (enumerable == null)
        {
            throw new ArgumentException($"Argument {nameof(enumerable)} is null.");
        }

        using (var enumerator = enumerable.GetEnumerator())
        {
            while (enumerator.MoveNext())
            {
                action(enumerator.Current);
            }
        }
    }
}