java里使用ftpClient的被动方式访问ftp服务器读取一系列文件夹,只有第一个内容能读到,其他读不到?

要读取的内容是一个文件夹下的n个子文件夹,每个子文件夹中只有一个文件。
删除了没有用的内容后的代码如下:
……(之前定义了一个ftpClient)
ftpClient.enterLocalActiveMode();
ftpClient.changeWorkingDirectory(basePath);
FTPFile[] ftpFiles = ftpClient.listFiles();
for (FTPFile file : ftpFiles) {
//读取文件
FTPFile[] subFiles =ftpClient.listFiles();
for (FTPFile subFile : subFiles) {
……(具体的处理过程)
}
……(删除file 文件夹与其中的文件)
}

现在的效果是,第一个子文件夹能正常处理。但是删除了第一个子文件夹后,所有的subFiles获得的都是空,再也不能处理其他文件。
题目说错了,是主动模式。

你basePath应该有问题,basePath应该指向要删除目录的上一级目录.追问

无论怎样设置工作目录,第二次和之后读取时打印出的工作目录都是null

追答

比如你的路径是ftp:192.168.1.1:40/a/;你要检查a下的文件夹里是否存在文件,那么你首先获取到的是a文件夹下的文件夹,然后你的路径应该是ftp:192.168.1.1:40/a/文件夹1/isFile这样判断.

追问

每次删除了一个文件夹,我的程序都会重新设定工作目录,但是设置后还会出现路径为空的问题。
现在问题的关键已经找到了,是主被动与completepending匹配的问题。

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-12-12
楼主 你是怎么解决的哈 我也遇到这样的情况了
相似回答