C# 获取日期范围之后目录和子目录中的所有文件

C# 获取日期范围之后目录和子目录中的所有文件,c#,C#,有没有办法获取目录和子目录中日期范围之后的所有文件 我知道Directory.GetFiles()可以迭代所有文件夹,但这不允许我访问可以在其中执行if语句的文件对象。您可以使用和搜索选项。例如,所有目录: var allFilesIn2015 = Directory.EnumerateFiles("Dir-Path", "*.*", System.IO.SearchOption.AllDirectories) .Where(path => File.GetCreationTime

有没有办法获取目录和子目录中日期范围之后的所有文件

我知道
Directory.GetFiles()
可以迭代所有文件夹,但这不允许我访问可以在其中执行if语句的文件对象。

您可以使用和
搜索选项。例如,所有目录

var allFilesIn2015 = Directory.EnumerateFiles("Dir-Path", "*.*", System.IO.SearchOption.AllDirectories)
    .Where(path => File.GetCreationTime(path).Year == 2015)
    .ToList();
您还可以使用
FileInfo
s及其属性
CreationTime
LastAccessTime

DirectoryInfo dir = new DirectoryInfo("Dir-Path");
var allFileInfosIn2015 = dir.EnumerateFiles("*.*", System.IO.SearchOption.AllDirectories)
    .Where(fi => fi.CreationTime.Year == 2015)
    .ToList();
我使用,因为在这种情况下更有效。在开始处理文件之前,它不需要将所有文件加载到内存中

引述:

EnumerateFiles和GetFiles方法的区别如下: 使用EnumerateFiles,可以开始枚举名称集合 在归还全部藏品之前;当您使用GetFiles时 必须等待返回整个名称数组,然后才能 访问阵列。因此,当您处理许多文件和 目录、枚举文件可以更高效

您可以使用和
SearchOption.AllDirectories
,例如:

var allFilesIn2015 = Directory.EnumerateFiles("Dir-Path", "*.*", System.IO.SearchOption.AllDirectories)
    .Where(path => File.GetCreationTime(path).Year == 2015)
    .ToList();
您还可以使用
FileInfo
s及其属性
CreationTime
LastAccessTime

DirectoryInfo dir = new DirectoryInfo("Dir-Path");
var allFileInfosIn2015 = dir.EnumerateFiles("*.*", System.IO.SearchOption.AllDirectories)
    .Where(fi => fi.CreationTime.Year == 2015)
    .ToList();
我使用,因为在这种情况下更有效。在开始处理文件之前,它不需要将所有文件加载到内存中

引述:

EnumerateFiles和GetFiles方法的区别如下: 使用EnumerateFiles,可以开始枚举名称集合 在归还全部藏品之前;当您使用GetFiles时 必须等待返回整个名称数组,然后才能 访问阵列。因此,当您处理许多文件和 目录、枚举文件可以更高效


它返回带有路径的完整文件名。因此,您可以使用Fileinfo或其他东西来确定某些文件属性,使用
DirectoryInfo.GetFiles()
代替目录,然后使用LinqIt返回带有路径的完整文件名。因此,您可以使用Fileinfo或其他东西来确定某些文件属性,使用
DirectoryInfo.GetFiles()
代替Directory,然后使用Linq