是否有从给定路径获取最后创建的文件夹的功能? 我想查看最后创建的文件夹,以检查我的相机今天是否拍摄了照片。 我想的另一种方法是获取系统日期,然后开始搜索包含当前日期的文件夹。但是如果相机日期错误,那么这种方法不会起作用! 谢谢。还有其他想法吗?
前:
if lastcreatedfolder(dir_path):='05012016' then
showmessage('TODAY A FOLDER WAS CREATED')
else
showmessage('NO FOLDER WAS CREATED TODAY!');
答案 0 :(得分:2)
Delphi 2010也有IOUtils.pas
单位。
使用此单元,可以按如下方式找到最后创建的文件夹:
uses
IOUtils, Types, DateUtils;
function FindLastCreatedDirectory(const APath: string): string;
var
LastCreateTime : TDateTime;
PathsInQuestion: TStringDynArray;
n : Integer;
begin
LastCreateTime := MinDateTime;
Result := '';
PathsInQuestion := TDirectory.GetDirectories(APath);
for n := Low(PathsInQuestion) to High(PathsInQuestion) do
begin
if CompareDateTime( TDirectory.GetCreationTime(PathsInQuestion[n]), LastCreateTime ) = GreaterThanValue then
begin
LastCreateTime := TDirectory.GetCreationTime(PathsInQuestion[n]);
Result := PathsInQuestion[n];
end;
end;
end;
答案 1 :(得分:1)
可以使用System.SysUtils.FindFirst函数找到给定路径中最后创建的目录。
可以使用函数的TimeStamp
参数检查TSearchRec
记录的var F
字段,以评估文件系统元素的时间戳。
uses
System.SysUtils,
Winapi.Windows;
function getLastCreatedDirectory(const APath: string): string;
var
res: TSearchRec;
lastCreatedFileTime: TFileTime;
begin
Result := '';
FillChar(lastCreatedFileTime, SizeOf(TFileTime), 0);
if FindFirst(APath, faDirectory, res) = 0 then begin
try
repeat
if (res.Attr and faDirectory) = 0 then
Continue;
if (res.Name = '.') or (res.Name = '..') then
Continue;
{if res.TimeStamp > lastCreatedTime then begin
lastCreatedTime := res.TimeStamp;
Result := ExtractFilePath(APath) + res.Name;
end;}
if CompareFileTime(res.FindData.ftCreationTime, lastCreatedFileTime) = 1 then begin
lastCreatedFileTime := res.FindData.ftCreationTime;
Result := ExtractFilePath(APath) + res.Name;
end;
until FindNext(res) <> 0;
finally
System.SysUtils.FindClose(res);
end;
end;
end;
begin
WriteLn(getLastCreatedDirectory('C:\Program Files (x86)\*'));
ReadLn;
end.
编辑2
由于res.TimeStamp
似乎提供了上次修改日期,并且TSearchRec.Time
字段已弃用,因此可以评估文件夹的创建时间,评估res.FindData.ftCreationTime
记录的TSearchRec
字段。< / p>
答案 2 :(得分:-2)
如果您自己创建的文件夹,即使名称是随机字符,也可以将该文件夹名称保存在数组中,但是如果由程序等创建文件夹, 你可以去文件夹
cd "path"
exp: cd /home
并使用&#39; bellow&#39;命令按日期排序创建文件和文件夹,
所以如果有meny文件使用这个:
ls -lt | less
也是&#39; head&#39;我觉得命令对你有用