The following example demonstrates how to make a directory on a FTP server using Apache Commons Net library.

To create a directory on the FTP server, use the following method of the FTPClient class:

boolean makeDirectory(String pathname)

where pathname is path of the directory to be created. Path can be relative or absolute. For example, the following statement:


will create a directory “upload” relative to the current directory. But the following statement:


will create the “upload” directory under server’s root directory, because if the path name begins with a forward slash, it denotes an absolute path.

We can also specify a path structure like this:


That will create the directory “java” under the “/upload/projects” directory which must exist.

The method returns true if the directory is created successfully, otherwise returns false. So it’s recommended to check return value of this method as follows:


boolean created = makeDirectory("/upload/projects/java")

if (created) {

	// the directory is created, everything is going well

} else {

	// something unexpected happened...


Following is a sample program that logins to a FTP server and creates a directory called “upload123” under server’s root directory:


public class FTPCreateDirDemo {
    private static void showServerReply(FTPClient ftpClient) {
        String[] replies = ftpClient.getReplyStrings();
        if (replies != null && replies.length > 0) {
            for (String aReply : replies) {
                System.out.println("SERVER: " + aReply);
    public static void main(String[] args) {
        String server = "";
        int port = 21;
        String user = "username";
        String pass = "password";
        FTPClient ftpClient = new FTPClient();
        try {
            ftpClient.connect(server, port);
            int replyCode = ftpClient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(replyCode)) {
                System.out.println("Operation failed. Server reply code: " + replyCode);
            boolean success = ftpClient.login(user, pass);
            if (!success) {
                System.out.println("Could not login to the server");
            // Creates a directory
            String dirToCreate = "/upload123";
            success = ftpClient.makeDirectory(dirToCreate);
            if (success) {
                System.out.println("Successfully created directory: " + dirToCreate);
            } else {
                System.out.println("Failed to create directory. See server's reply.");
            // logs out
        } catch (IOException ex) {
            System.out.println("Oops! Something wrong happened");

 Compile and run the program:

compile and run FTP create directory program

If you want to create a directory whose path like this: /projects/java/ftp/demo, but the parent directories do not exist, consult this article: Creating nested directory structure on a FTP server.

Download latest version of Apache Commons Net library.


Download this file ([Java source code]1 kB