如何添加文件创建日期过滤器?
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
这里有几点需要注意:
- 我们正在创建一个
DirectoryInfo
并使用它来获取 FileInfo
个对象。鉴于您无论如何都要为每个文件创建一个 FileInfo
,不这样做是愚蠢的。 FileInfo
对象为您提供了创建时间、不带文件夹路径的文件名以及复制文件的方法。
- 我们调用
EnumerateFiles
而不是 GetFiles
。后者 returns 一个包含所有文件的数组,但在这种情况下我们不想要所有文件。如果你要过滤,那么枚举会更好,因为它一个一个地获取每个文件,处理一个文件并在获取下一个文件之前丢弃它。这样更有效率。在这种情况下,我们甚至不调用 ToArray
或 ToList
,因此直到循环才真正检索文件,然后一个一个地检索和处理它们。
- 使用
Date.Today.Date
毫无意义。 Today
时间已经归零。在内部,Date.Today
使用 Date.Now.Date
.
如何为今天和明天创建的文件添加文件创建日期过滤器?
这部分不起作用,我需要添加今天和明天创建的文件:
.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
这里有几点需要注意:
- 我们正在创建一个
DirectoryInfo
并使用它来获取FileInfo
个对象。鉴于您无论如何都要为每个文件创建一个FileInfo
,不这样做是愚蠢的。FileInfo
对象为您提供了创建时间、不带文件夹路径的文件名以及复制文件的方法。 - 我们调用
EnumerateFiles
而不是GetFiles
。后者 returns 一个包含所有文件的数组,但在这种情况下我们不想要所有文件。如果你要过滤,那么枚举会更好,因为它一个一个地获取每个文件,处理一个文件并在获取下一个文件之前丢弃它。这样更有效率。在这种情况下,我们甚至不调用ToArray
或ToList
,因此直到循环才真正检索文件,然后一个一个地检索和处理它们。 - 使用
Date.Today.Date
毫无意义。Today
时间已经归零。在内部,Date.Today
使用Date.Now.Date
.