Apache NET ftp listFiles有效但listFiles(String pathName)不起作用

时间:2016-12-24 15:36:49

标签: ftp spring-integration apache-commons-net

背景

我正在开发一个使用spring-integration通过ftp检索文件的应用程序。我正在使用spring-integration的ftp入站适配器之一。然而,即使在我多次尝试之后,我也无法使其正常工作。所以我开始查看代码并发现它在包装下使用apache commons net api。

问题

使用apache commons网络库,我以相同的方式在本地编写代码,但它无法正常工作。这是代码 -

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

这会返回0行。这就是spring-integration执行调用的方式 - 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("");

1 个答案:

答案 0 :(得分:0)

请查看有关changeWorkingDirectory的{​​{3}}。您只需要扩展DefaultFtpSessionFactory并实施postProcessClientAfterConnect()回调。