Sample code for 30+ languages & platforms
React Native

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 React Native Downloads

React Native
import { FileAccess, Ftp2, StringArray } from '@chilkat/react-native'

async function chilkatExample() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  const ftp = new Ftp2();

  ftp.hostname = 'ftp.example.com';
  ftp.username = 'login';
  ftp.password = 'password';

  ftp.keepSessionLog = true;

  // Connect and login to the FTP server.
  try {
    await ftp.connectAsync();
  } catch {
    console.log(ftp.lastErrorText);
    return;
  }

  // Set the current remote directory to the root of
  // the remote tree to be compared.
  try {
    await ftp.changeRemoteDirAsync('abc123');
  } catch {
    console.log(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 true.
  const mode = 1;
  const descendTree = true;
  const previewOnly = true;
  try {
    await ftp.syncRemoteTree2Async('/temp/abc123', mode, descendTree, previewOnly);
  } catch {
    console.log(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:
  const sa = new StringArray();
  sa.loadFromText(ftp.syncPreview);

  const fac = new FileAccess();

  const numFiles = sa.count;
  let i = 0;
  let localFilePath = '';
  while (i < numFiles) {
    localFilePath = sa.getString(i);
    console.log(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:
    try {
      fac.fileDelete(localFilePath);
    } catch {
      console.log(`Failed to delete: ${localFilePath}`);
    }

    i++;
  }

  await ftp.disconnectAsync();
}