Apache NET ftp listFiles 有效但 listFiles(String pathName) 无效

Apache NET ftp listFiles works but listFiles(String pathName) does not work

背景

我正在开发一个使用 spring 集成通过 ftp 检索文件的应用程序。我正在使用 spring-integration 的 ftp 入站适配器之一。然而,即使在我反复尝试之后,我也无法让它工作。所以我开始查看代码,发现它使用 apache commons net api.

问题

使用apache commons net library,我用同样的方法在本地写了代码,但没有用。这是代码-

FTPClient client = new FTPClient();
client.connect("x.x.x.x", 21);
client.enterLocalPassiveMode();
client.login("xxx", "xxx");
FTPFile[] files = client.listFiles("/AMNH");

这returns我0行。这就是 spring 集成执行调用的方式 - client.listFiles("/AMNH")。所以返回的文件列表是 0,即使我在 ftp 位置有文件,整个应用程序都处于空闲状态。

但是,如果我 运行 以下代码,我能够检索文件。我想知道当我们传递参数时方法 listFiles 有什么问题,我们如何解决它?我这样说是因为我没有不执行 listFiles(String pathName)

的奢侈
FTPClient client = new FTPClient();
client.connect("x.x.x.x", 21);
client.enterLocalPassiveMode();
client.login("xxx", "xxx");
client.changeWorkingDirectory("/AMNH");
FTPFile[] files = client.listFiles("");

请查看 Reference Manual 关于 changeWorkingDirectory 的内容。您只需要扩展 DefaultFtpSessionFactory 并实现 postProcessClientAfterConnect() 回调。