Visual FoxPro
Visual FoxPro
Delete Local Files that Do Not Exist on the FTP Server
See more FTP Examples
Demonstrates how to get a list of local files in a directory tree that do not exist on the FTP server.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loFtp
LOCAL lnMode
LOCAL lnDescendTree
LOCAL lnPreviewOnly
LOCAL loSa
LOCAL loFac
LOCAL lnNumFiles
LOCAL i
LOCAL lcLocalFilePath
lnSuccess = 0
* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
loFtp = CreateObject('Chilkat.Ftp2')
loFtp.Hostname = "ftp.example.com"
loFtp.Username = "login"
loFtp.Password = "password"
loFtp.KeepSessionLog = 1
* Connect and login to the FTP server.
lnSuccess = loFtp.Connect()
IF (lnSuccess <> 1) THEN
? loFtp.LastErrorText
RELEASE loFtp
CANCEL
ENDIF
* Set the current remote directory to the root of
* the remote tree to be compared.
lnSuccess = loFtp.ChangeRemoteDir("abc123")
IF (lnSuccess <> 1) THEN
? loFtp.LastErrorText
RELEASE loFtp
CANCEL
ENDIF
* Recursively descend the local directory tree
* and find the files that exist locally but not remotely.
* These are the files what would be uploaded via
* the SyncRemoteTree method call with mode = 1.
* (Mode 1 would upload all files that do not exist on the FTP server.)
* The actual uploading is avoided by setting the preview-only argument to 1.
lnMode = 1
lnDescendTree = 1
lnPreviewOnly = 1
lnSuccess = loFtp.SyncRemoteTree2("/temp/abc123",lnMode,lnDescendTree,lnPreviewOnly)
IF (lnSuccess <> 1) THEN
? loFtp.LastErrorText
RELEASE loFtp
CANCEL
ENDIF
* The files what would've been uploaded are now available in the SyncPreview property,
* which contains a list of local file paths, one per line.
* A program can iterate over them like this:
loSa = CreateObject('Chilkat.StringArray')
loSa.LoadFromText(loFtp.SyncPreview)
loFac = CreateObject('Chilkat.FileAccess')
lnNumFiles = loSa.Count
i = 0
DO WHILE (i < lnNumFiles)
lcLocalFilePath = loSa.GetString(i)
? lcLocalFilePath
* An application can delete the file using Chilkat's file access object,
* or it can choose to use the native file API available in the programming language:
lnSuccess = loFac.FileDelete(lcLocalFilePath)
IF (lnSuccess <> 1) THEN
? "Failed to delete: " + lcLocalFilePath
ENDIF
i = i + 1
ENDDO
lnSuccess = loFtp.Disconnect()
RELEASE loFtp
RELEASE loSa
RELEASE loFac