Sample code for 30+ languages & platforms
Java

FTP Non-Recursive Sync Directory (Download)

See more FTP Examples

Download files from the server that have filenames matchhing a pattern, and don't yet exist in a local directory.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Ftp2;
import com.chilkatsoft.chilkat2.StringTable;

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("myUsername");
        ftp.setPassword("myPassword");
        ftp.setPort(21);
        ftp.setAuthTls(true);

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

            // Change to the remote directory where the files are located.
            // This step is only necessary if the files are not in the root directory
            // of the FTP account.
            ftp.changeRemoteDir("qa");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Indicate that we only want to download files with filenames ending in ".txt"
        ftp.setSyncMustMatch("*.txt");

        // Modes for synchronization are as follows:
        // mode=0: Download all files
        // mode=1: Download all files that do not exist on the local filesystem.
        // mode=2: Download newer or non-existant files.
        // mode=3: Download only newer files. If a file does not already exist on the local filesystem, it is not downloaded from the server.
        // mode=5: Download only missing files or files with size differences.
        // mode=6: Same as mode 5, but also download newer files.
        // mode=99: Do not download files, but instead delete remote files that do not exist locally.
        int mode = 1;

        // Download all files matching "*.txt" from the current remote ftp directory.
        // The files are downloaded into c:/temp/qa_output
        try {
            ftp.syncLocalDir("c:/temp/qa_output", mode);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Perhaps we wish to delete the files we just downloaded from the server..
        StringTable st = new StringTable();
        ftp.getSyncedFiles(st);

        int numFiles = st.getCount();
        int i = 0;
        String remoteFilename = "";
        while (i < numFiles) {
            remoteFilename = st.stringAt(i);
            System.out.println("Deleting " + remoteFilename + " from the FTP server");
            try {
                ftp.deleteRemoteFile(remoteFilename);
            } catch (ChilkatException e) {
                System.out.println(e.getLastErrorText());
                return;
            }

            i = i + 1;
        }

        ftp.disconnect();
    }
}