Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Delete Local Files that Do Not Exist on the FTP ServerDemonstrates how to get a list of local files in a directory tree that do not exist on the FTP server.
IncludeFile "CkFtp2.pb" IncludeFile "CkFileAccess.pb" IncludeFile "CkStringArray.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. ftp.i = CkFtp2::ckCreate() If ftp.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkFtp2::setCkHostname(ftp, "ftp.example.com") CkFtp2::setCkUsername(ftp, "login") CkFtp2::setCkPassword(ftp, "password") CkFtp2::setCkKeepSessionLog(ftp, 1) ; Connect and login to the FTP server. success.i = CkFtp2::ckConnect(ftp) If success <> 1 Debug CkFtp2::ckLastErrorText(ftp) CkFtp2::ckDispose(ftp) ProcedureReturn EndIf ; Set the current remote directory to the root of ; the remote tree to be compared. success = CkFtp2::ckChangeRemoteDir(ftp,"abc123") If success <> 1 Debug CkFtp2::ckLastErrorText(ftp) CkFtp2::ckDispose(ftp) ProcedureReturn 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. mode.i = 1 descendTree.i = 1 previewOnly.i = 1 success = CkFtp2::ckSyncRemoteTree2(ftp,"/temp/abc123",mode,descendTree,previewOnly) If success <> 1 Debug CkFtp2::ckLastErrorText(ftp) CkFtp2::ckDispose(ftp) ProcedureReturn 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: sa.i = CkStringArray::ckCreate() If sa.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkStringArray::ckLoadFromText(sa,CkFtp2::ckSyncPreview(ftp)) fac.i = CkFileAccess::ckCreate() If fac.i = 0 Debug "Failed to create object." ProcedureReturn EndIf numFiles.i = CkStringArray::ckCount(sa) i.i = 0 localFilePath.s While (i < numFiles) localFilePath = CkStringArray::ckGetString(sa,i) Debug localFilePath ; 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: success = CkFileAccess::ckFileDelete(fac,localFilePath) If success <> 1 Debug "Failed to delete: " + localFilePath EndIf i = i + 1 Wend success = CkFtp2::ckDisconnect(ftp) CkFtp2::ckDispose(ftp) CkStringArray::ckDispose(sa) CkFileAccess::ckDispose(fac) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.