Xbase++
Xbase++
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 Xbase++ Downloads
LOCAL nSuccess
LOCAL oFtp
LOCAL nMode
LOCAL nDescendTree
LOCAL nPreviewOnly
LOCAL oSa
LOCAL oFac
LOCAL nNumFiles
LOCAL i
LOCAL cLocalFilePath
nSuccess := 0
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
oFtp := CreateObject("Chilkat.Ftp2")
oFtp:Hostname := "ftp.example.com"
oFtp:Username := "login"
oFtp:Password := "password"
oFtp:KeepSessionLog := 1
// Connect and login to the FTP server.
nSuccess := oFtp:Connect()
IF (nSuccess != 1)
? oFtp:LastErrorText
oFtp:destroy()
RETURN
ENDIF
// Set the current remote directory to the root of
// the remote tree to be compared.
nSuccess := oFtp:ChangeRemoteDir("abc123")
IF (nSuccess != 1)
? oFtp:LastErrorText
oFtp:destroy()
RETURN
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.
nMode := 1
nDescendTree := 1
nPreviewOnly := 1
nSuccess := oFtp:SyncRemoteTree2("/temp/abc123", nMode, nDescendTree, nPreviewOnly)
IF (nSuccess != 1)
? oFtp:LastErrorText
oFtp:destroy()
RETURN
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:
oSa := CreateObject("Chilkat.StringArray")
oSa:LoadFromText(oFtp:SyncPreview)
oFac := CreateObject("Chilkat.FileAccess")
nNumFiles := oSa:Count
i := 0
DO WHILE (i < nNumFiles)
cLocalFilePath := oSa:GetString(i)
? cLocalFilePath
// 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:
nSuccess := oFac:FileDelete(cLocalFilePath)
IF (nSuccess != 1)
? "Failed to delete: " + cLocalFilePath
ENDIF
i := i + 1
ENDDO
nSuccess := oFtp:Disconnect()
oFtp:destroy()
oSa:destroy()
oFac:destroy()