Sample code for 30+ languages & platforms
Java

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 Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.FileAccess;
import com.chilkatsoft.chilkat2.Ftp2;
import com.chilkatsoft.chilkat2.StringArray;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Ftp2 ftp = new Ftp2();

        ftp.setHostname("ftp.example.com");
        ftp.setUsername("login");
        ftp.setPassword("password");

        ftp.setKeepSessionLog(true);

        // Connect and login to the FTP server.
        try {
            ftp.connect();

            // Set the current remote directory to the root of
            // the remote tree to be compared.
            ftp.changeRemoteDir("abc123");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            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.
        int mode = 1;
        boolean descendTree = true;
        boolean previewOnly = true;
        try {
            ftp.syncRemoteTree2("/temp/abc123", mode, descendTree, previewOnly);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            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:
        StringArray sa = new StringArray();
        sa.loadFromText(ftp.getSyncPreview());

        FileAccess fac = new FileAccess();

        int numFiles = sa.getCount();
        int i = 0;
        String localFilePath = "";
        while (i < numFiles) {
            localFilePath = sa.getString(i);
            System.out.println(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 (ChilkatException e) {
                System.out.println("Failed to delete: " + localFilePath);
            }

            i = i + 1;
        }

        ftp.disconnect();
    }
}