java遍历ftp文件夹时,在FTPFile ff[] = ftpClient.listFiles()处一直提示空指针异常错误,是怎么回事。

程序如下:
public void getFile(String ftpfilepath)
{
try{
FTPClient ftpClient=new FTPClient();
ftpfilepath=new String(ftpfilepath.getBytes("GBK"),"ISO-8859-1");
ftpClient.changeWorkingDirectory(ftpfilepath);
FTPFile ff[] = ftpClient.listFiles(); //空指针异常
if (ff!=null)
{
for(int i=0;i<ff.length;i++)
{
String name=ff[i].getName();
System.out.println(name);
}
}
}catch(Exception e){
e.printStackTrace();
}
}

错误如下:
java.lang.NullPointerException
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:437)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:484)
at org.apache.commons.net.ftp.FTP.cwd(FTP.java:709)
at org.apache.commons.net.ftp.FTPClient.changeWorkingDirectory(FTPClient.java:710)
at com.file.Myftp.getFile(Myftp.java:57)
at com.file.Myftp.main(Myftp.java:209)

boolean success = false;
FTPClient ftp = new FTPClient();
try {
int reply;
ftp.connect(url, port);
//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
ftp.login(username, password);//登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return success;
}
ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
FTPFile[] fs = ftp.listFiles();

追问

这样是可以,谢谢~~不过我原来的程序中做了一个创建连接的函数,对ftpClient已经做过初始化了,为什么我之前的程序会出问题?
public void connectServer() {
try{
FTPClient ftpClient=new FTPClient();
int reply ;
ftpClient.connect(host, port);
ftpClient.login(username, password);
…………
}

追答

对FTPClient进行单步调试.

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-07
你没有抛出控制针异常啊 。。。

...ff[] = ftpClient.listFiles()处一直提示空指针异常错误,是怎么回 ...
boolean success = false; FTPClient ftp = new FTPClient(); try { int reply; ftp.connect(url, port); \/\/如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器 ftp.login(username, password);\/\/登录 reply = ftp.getReplyCode(); if (!FTPReply.is...

FTPFile[] fs = ftp.listFiles();报错
java.net.SocketException: Software caused connection abort: recv failed 原因:服务端将连接关闭了(可能发生了异常),但客户端还在接收数据。总结产生原因,在服务端\/客户端单方面关闭连接的情况下,另一方依然以为 tcp连接仍然建立,试图读取对方的响应数据,导致出现 Software caused connection abort: recv...

FTPClient类的listFile()卡住了,啥原因啊
这个方法要和ftp服务器通讯,执行list命令,因此如果网络不通、服务器没登陆等都可能导致调用阻塞、出错等,你手工ftp登陆服务器试一下。

...下载时 FTPFile[] fs = ftp.listFiles(); 总报下面那个错 为什么...
jar用的commons-net-1.4.1_ftp.jar... jar 用的commons-net-1.4.1_ftp.jar 展开  我来答 分享 微信扫一扫 新浪微博 QQ空间 举报 浏览16 次 可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。 ftpclient ftpfile fs ftp.listfiles 搜索资料 本地图片 图片链接 代码...

急!ftpClient.listFiles() SocketTimeoutException: Accept timed out...
是不是连接没有正确关闭,或者对连接数,或者连接ip什么的有限制。这个提示就是说连接超时了啊。设置了超时时间?吧设置去了?看看这个,有帮助。http:\/\/bbs.csdn.net\/topics\/20145879#r_achor

ftpClient.listFiles(path)报错连接超时
ftpClient.listFiles(path)看下源码才知道,他里面创建了一个新的连接,端口是随机的,所以需要开通服务器到ftp地址所有端口的策略。

使用java通过ftp下载文件,ftpClient.listFiles获取不到当前路径下的文件...
回答:File dir=new File(".");\/\/当前路径是项目文件夹,是src外面而不是里面 File[]files=dir.listFiles(new FileFilter(){ @Override public boolean accept(File arg0) { return arg0.isFile(); } }); System.out.println("有文件"+files.length+"个");

执行ftpclient.listfiles(path)时,文件名中如果带有中括号就无法找到文...
这是因为Java中中括号用于数组索引,需要转义才能用在字符串内。在这里中括号[]应改为\\[\\]。如下代码:new File("text\/info\\[creeper\\].txt");

java ftp 无法获取listFiles
客户端和服务端建立tcp的短连接,每次客户端发送一次请求,服务端响应后关闭与客户端的连接.如果客户端在服务端关闭连接后,没有释放连接,继续试图发送请求和接收响应.这个时候就会出错.

使用FTPClient下载文件报错java.net.SocketException: Software caused...
检查一下路径和端口号能不能登陆ftp

相似回答