我需要扫描特定文件夹中的最新文件(基本上检查修改日期以查看哪个是最新的),但请记住,这些文件具有随机名称。这是我到目前为止所得到的:
procedure TForm1.Button1Click(Sender: TObject);
begin
ftp.Host := 'domain';
ftp.Username := 'username';
ftp.password := 'password';
ftp.Connect;
ftp.Put('random-filename.ext'); //This is where it should grab only the latest file
ftp.Quit;
ftp.Disconnect;
end;
这可能吗?
谢谢!
答案 0 :(得分:5)
假设OP想要扫描特定的本地文件夹并找到最新修改的文件,这里有一个非常简单的功能:
function GetLastModifiedFileName(AFolder: String; APattern: String = '*.*'): String;
var
sr: TSearchRec;
aTime: Integer;
begin
Result := '';
aTime := 0;
if FindFirst(IncludeTrailingPathDelimiter(AFolder) + APattern, faAnyFile, sr) = 0 then
begin
repeat
if sr.Time > aTime then
begin
aTime := sr.Time;
Result := sr.Name;
end;
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
AFolder
应该是您要扫描的文件夹的绝对或相对路径,APattern
是可选的,并且应包含指定应检查哪些文件的标准DOS模式。如果没有为第二个参数指定任何内容,则假定为*。*(所有文件)。结果将是具有最近修改日期的文件名。
答案 1 :(得分:2)
因为我认为您试图将本地计算机中的最新文件放到ftp服务器上,所以可以使用shell Api函数:ShGetFileInfo
首先从源文件夹中获取所有文件,然后获取每个文件的FileInfo - 在temp中保留带有最新修改日期的文件名。变种
请参阅此网站,例如:http://www.scip.be/index.php?Page=ArticlesDelphi06&Lang=EN