如何添加文件创建日期过滤器?

How do I add the file creation date filter?

如何为今天和明天创建的文件添加文件创建日期过滤器?

这部分不起作用,我需要添加今天和明天创建的文件:

.Where(Function(file) New FileInfo(file).CreationTime.Date = DateTime.Today.Date)

Dim pdfList As String() = _
    Directory.GetFiles(sourceDir, "*.PDF").Where(Function(file) New     
    FileInfo(file).CreationTime.Date = _
    DateTime.Today.Date)
For Each f As String In pdfList
    'Remove path from the file name.
    Dim fName As String = f.Substring(sourceDir.Length + 1)
    ' Use the Path.Combine method to safely append the file name to the path.
    ' Will overwrite if the destination file already exists.
    File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, _
    fName), True)
Next
Dim folder As New DirectoryInfo(sourceFolderPath)
Dim files = folder.EnumerateFiles("*.pdf")
                  .Where(Function(fi) fi.CreationTime.Date = Date.Today)

For Each file In files
    file.CopyTo(Path.Combine(backupFolderPath, file.Name))
Next

这里有几点需要注意:

  1. 我们正在创建一个 DirectoryInfo 并使用它来获取 FileInfo 个对象。鉴于您无论如何都要为每个文件创建一个 FileInfo ,不这样做是愚蠢的。 FileInfo 对象为您提供了创建时间、不带文件夹路径的文件名以及复制文件的方法。
  2. 我们调用 EnumerateFiles 而不是 GetFiles。后者 returns 一个包含所有文件的数组,但在这种情况下我们不想要所有文件。如果你要过滤,那么枚举会更好,因为它一个一个地获取每个文件,处理一个文件并在获取下一个文件之前丢弃它。这样更有效率。在这种情况下,我们甚至不调用 ToArrayToList,因此直到循环才真正检索文件,然后一个一个地检索和处理它们。
  3. 使用 Date.Today.Date 毫无意义。 Today 时间已经归零。在内部,Date.Today 使用 Date.Now.Date.