Reputation: 325
I am trying to list all the files under a specific directory in a ftp server.
FTPFile[] subFiles = ftpClient.listFiles("directory");
Although the directory is a valid one , but the code gets stuck while calling listFiles , what may be the reason. ? Further i would like to mention that a seperate netbeans project accessing the same FTP server is working fine with the same code , but a maven project is having the problem. please help.
Upvotes: 8
Views: 14632
Reputation: 67
I have same issue, with same source code, it's running fine when I run it via IDE (IntelliJ), but when run in server, it always return no file while trying to call ftpClient.listFiles()
My fix is active Local Passive Mode
after connect to FTP server.
ftpClient.connect("FTP_server_address");
ftpClient.enterLocalPassiveMode();
Upvotes: 0
Reputation: 842
To add to above answers the enterLocalPassiveMode() method should be called after connect() and before login(). Any other way I couldn't get mine to work. This testing was based on another answer as specified here: https://stackoverflow.com/a/5183296/11971304
client.connect(host, port);
client.enterLocalPassiveMode();
if (!client.login(username, password)) {
throw new LoginException("wrong credentials");
}
Upvotes: 4
Reputation: 3788
Try to use passive mode
. I assume that you are using the newest commons net library (you didn't write which lib you are using).
Next approach, try to change the file list layout. The commons lib uses auto-detection but in some cases this doesn't work. You can change (and test) another file list layout as followed:
FTPClientConfig configuration = new FTPClientConfig(FTPClientConfig.TEST_YOURSELF);
FTPClient yourClient = FTPClient(...);
client.configure(conf);
Upvotes: 12