有没有办法根据日期获取文件列表?
is there a way to get a list of files based on date?
在 Delphi 中,我需要根据日期从目录中获取文件列表。
我当前的代码使用
返回请求的所有文件
Files := tDirectory.GetFiles(aDir, '*.docx', tSearchOption.soAllDirectories);
我想要那些基于日期的文件(这样我就不必处理 20000 个文件,只需要处理自 'last' 我检查后添加的 10 个...)
有办法吗?
您可以使用以下代码:
USES System.Types, System.IOUtils;
FUNCTION GetFilesNewerThan(CONST Path,SearchPattern : STRING ; CONST SearchOption : TSearchOption ; CONST NewerThan : TDateTime) : TStringDynArray;
BEGIN
Result:=TDirectory.GetFiles(Path,SearchPattern,SearchOption,
FUNCTION(CONST Path : STRING ; CONST SearchRec : TSearchRec) : BOOLEAN
BEGIN
Result:=(SearchRec.TimeStamp>NewerThan)
END);
END;
这会调用 TDirectory.GetFiles 方法,但会应用过滤器,以便仅返回“LastWrite”时间晚于给定“NewerThan”参数的文件。
它仍然需要读取整个目录结构 - 如果您不像 David 建议的那样持续监视目录,则没有内置的方法来过滤时间戳(我假设这是一个 运行“按需”而不是 运行s 24/7) 的服务。
在 Delphi 中,我需要根据日期从目录中获取文件列表。 我当前的代码使用
返回请求的所有文件Files := tDirectory.GetFiles(aDir, '*.docx', tSearchOption.soAllDirectories);
我想要那些基于日期的文件(这样我就不必处理 20000 个文件,只需要处理自 'last' 我检查后添加的 10 个...)
有办法吗?
您可以使用以下代码:
USES System.Types, System.IOUtils;
FUNCTION GetFilesNewerThan(CONST Path,SearchPattern : STRING ; CONST SearchOption : TSearchOption ; CONST NewerThan : TDateTime) : TStringDynArray;
BEGIN
Result:=TDirectory.GetFiles(Path,SearchPattern,SearchOption,
FUNCTION(CONST Path : STRING ; CONST SearchRec : TSearchRec) : BOOLEAN
BEGIN
Result:=(SearchRec.TimeStamp>NewerThan)
END);
END;
这会调用 TDirectory.GetFiles 方法,但会应用过滤器,以便仅返回“LastWrite”时间晚于给定“NewerThan”参数的文件。
它仍然需要读取整个目录结构 - 如果您不像 David 建议的那样持续监视目录,则没有内置的方法来过滤时间戳(我假设这是一个 运行“按需”而不是 运行s 24/7) 的服务。