麻烦帮我看下这个递归怎么死循环了?

young_choi 2009-07-16 11:12:57
最近在做FTPClient想列举出FTP服务器中所有文件及子目录下的文件。
程序如下,只是好像列举子目录会出毛病。不知道递归错在哪里?
import java.io.IOException;
import java.net.SocketException;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

public class MyFTP {
private String ip = "192.168.0.11";
private int port = 21;
private String username = "kevin";
private String password = "kevin";
private FTPClient ftpClient = new FTPClient();

public boolean login() {
boolean isLogin = false;
try {
ftpClient.connect(ip, port);
ftpClient.login(username, password);
isLogin = true;
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return isLogin;
}

public void listAllFiles(String remotePath) {
if (this.login()) {
try {
if (remotePath.startsWith("/") && remotePath.endsWith("/")) {
FTPFile[] files = ftpClient.listFiles(remotePath);
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()) {
System.out.println(files[i].getName());
} else if (files[i].isDirectory()) {
System.out.println("hello");
listAllFiles(remotePath + files[i].getName() + "/");
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

public static void main(String[] args) {
MyFTP ftp = new MyFTP();
ftp.listAllFiles("/");
}
}

一直打印出hello死循环了。。。。
...全文
99 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
newday8166 2009-07-17
  • 打赏
  • 举报
回复
学习
rumlee 2009-07-17
  • 打赏
  • 举报
回复
ftpClient.listFiles(remotePath);

你可以看一下这个方法是不是也包含本级目录或者上级目录之类的,如果也包含本级目录或者上级目录,那当然就会死循环了,如果只包含下级目录的话,我好像感觉这个程序应该没有什么问题。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧