Objective-C
Objective-C
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 Objective-C Downloads
#import <CkoFtp2.h>
#import <CkoStringArray.h>
#import <CkoFileAccess.h>
#import <NSString.h>
BOOL success = NO;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
CkoFtp2 *ftp = [[CkoFtp2 alloc] init];
ftp.Hostname = @"ftp.example.com";
ftp.Username = @"login";
ftp.Password = @"password";
ftp.KeepSessionLog = YES;
// Connect and login to the FTP server.
success = [ftp Connect];
if (success != YES) {
NSLog(@"%@",ftp.LastErrorText);
return;
}
// Set the current remote directory to the root of
// the remote tree to be compared.
success = [ftp ChangeRemoteDir: @"abc123"];
if (success != YES) {
NSLog(@"%@",ftp.LastErrorText);
return;
}
// 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 YES.
int mode = 1;
BOOL descendTree = YES;
BOOL previewOnly = YES;
success = [ftp SyncRemoteTree2: @"/temp/abc123" mode: [NSNumber numberWithInt: mode] bDescend: descendTree bPreviewOnly: previewOnly];
if (success != YES) {
NSLog(@"%@",ftp.LastErrorText);
return;
}
// 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:
CkoStringArray *sa = [[CkoStringArray alloc] init];
[sa LoadFromText: ftp.SyncPreview];
CkoFileAccess *fac = [[CkoFileAccess alloc] init];
int numFiles = [sa.Count intValue];
int i = 0;
NSString *localFilePath = 0;
while ((i < numFiles)) {
localFilePath = [sa GetString: [NSNumber numberWithInt: i]];
NSLog(@"%@",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 = [fac FileDelete: localFilePath];
if (success != YES) {
NSLog(@"%@%@",@"Failed to delete: ",localFilePath);
}
i = i + 1;
}
success = [ftp Disconnect];