首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何添加文件创建日期筛选器?

如何添加文件创建日期筛选器?
EN

Stack Overflow用户
提问于 2021-09-10 12:26:53
回答 1查看 102关注 0票数 0

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

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

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

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-10 12:59:48

代码语言:javascript
复制
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。后者返回一个包含所有文件的数组,但在本例中我们不需要所有文件。如果要过滤,那么枚举更好,因为它一个接一个地获取每个文件,处理一个文件并在得到下一个文件之前丢弃它。这样更有效率。在本例中,我们甚至不调用ToArrayToList,因此直到循环之后才实际检索文件,然后逐个检索和处理文件。
  3. 没有使用Date.Today.Date的意义。Today已经将时间归零了。在内部,Date.Now.Date.

使用Date.Today

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69132188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档