I would like to ask if Delphi Indy ftp idFTP.GET can preserve the file's created and modified date? If not, how can I accomplish this?
Thanks!
TIdFTP.Get()
creates a new local file, so the OS is going to assign the current date/time to that file by default. To assign the remote file's timestamp to the local file, you will have to retrieve the remote file's timestamp using either TIdFTP.FileDate()
, TIdFTP.List()
, or TIdFTP.ExtListDir()
, and then apply the timestamp to the local file using platform-specific APIs, such as SetFileTime()
on Windows, utimensat()
/futimens()
on Linux, etc.
TIdFTP
queries that by default, see the TIdFTP.TZInfo
property. Also, TIdFTP.FileDate()
and modern directory listings are able to provide timestamps as UTC, so you don't always need the server's timezone anyway.
Commented
Feb 11, 2023 at 16:43