PureBasic
PureBasic
SFTP Get File Date/Times in Different Formats
See more SFTP Examples
Demonstrates how to get remote file date/times in different formats.Chilkat PureBasic Downloads
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkSFtpFile.pb"
IncludeFile "CkSFtpDir.pb"
IncludeFile "CkSFtp.pb"
IncludeFile "CkDateTime.pb"
Procedure ChilkatExample()
success.i = 0
; This requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
sftp.i = CkSFtp::ckCreate()
If sftp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Connect to the SSH server.
hostname.s = "my-sftp-server.com"
port.i = 22
success = CkSFtp::ckConnect(sftp,hostname,port)
If success = 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
; Authenticate with the SSH server.
success = CkSFtp::ckAuthenticatePw(sftp,"myLogin","myPassword")
If success = 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
; After authenticating, the SFTP subsystem must be initialized:
success = CkSFtp::ckInitializeSftp(sftp)
If success = 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
; Open a directory on the server...
; This example opens the "junk" directory located under the HOME directory of the SSH user account.
handle.s = CkSFtp::ckOpenDir(sftp,"junk")
If CkSFtp::ckLastMethodSuccess(sftp) = 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
ProcedureReturn
EndIf
; Download the directory listing:
dirListing.i = CkSFtpDir::ckCreate()
If dirListing.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkSFtp::ckReadDirListing(sftp,handle,dirListing)
If success = 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
CkSFtpDir::ckDispose(dirListing)
ProcedureReturn
EndIf
; Close the directory handle
success = CkSFtp::ckCloseHandle(sftp,handle)
If success = 0
Debug CkSFtp::ckLastErrorText(sftp)
CkSFtp::ckDispose(sftp)
CkSFtpDir::ckDispose(dirListing)
ProcedureReturn
EndIf
; Iterate over the files.
; Examine each filename and indicate those that match *FICHERO*.pdf
; (i.e. the filename contains the word "FICHERO" and ends in ".pdf")
fileObj.i = CkSFtpFile::ckCreate()
If fileObj.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
sbFilename.i = CkStringBuilder::ckCreate()
If sbFilename.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
caseSensitive.i = 0
bLocalDateTime.i = 0
dt.i = CkDateTime::ckCreate()
If dt.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
i.i = 0
n.i = CkSFtpDir::ckNumFilesAndDirs(dirListing)
While i < n
success = CkSFtpDir::ckFileAt(dirListing,i,fileObj)
If success = 0
Debug CkSFtpDir::ckLastErrorText(dirListing)
CkSFtp::ckDispose(sftp)
CkSFtpDir::ckDispose(dirListing)
CkSFtpFile::ckDispose(fileObj)
CkStringBuilder::ckDispose(sbFilename)
CkDateTime::ckDispose(dt)
ProcedureReturn
EndIf
Debug CkSFtpFile::ckFilename(fileObj)
; Get the last-modified date/time
CkDateTime::ckSetFromRfc822(dt,CkSFtpFile::ckLastModifiedTimeStr(fileObj))
; Get the date/time in other formats offered by the CkDateTime object.
; such as Wed, 18 Oct 2017 09:08:21 GMT
Debug "RFC822 format: " + CkDateTime::ckGetAsRfc822(dt,bLocalDateTime)
; such as 1990-12-31T23:59:60Z
Debug "Timestamp: " + CkDateTime::ckGetAsTimestamp(dt,bLocalDateTime)
; Such as: "02/16/2008 12:15:12" where hour is 0 to 23.
Debug "RFC822 format: " + CkDateTime::ckGetAsIso8601(dt,"MM/DD/YYYY hh:mm:ss",bLocalDateTime)
i = i + 1
Wend
Debug "Success."
CkSFtp::ckDispose(sftp)
CkSFtpDir::ckDispose(dirListing)
CkSFtpFile::ckDispose(fileObj)
CkStringBuilder::ckDispose(sbFilename)
CkDateTime::ckDispose(dt)
ProcedureReturn
EndProcedure