我必须获取ftp服务器中存在的文件或文件夹的列表。我尝试了以下代码,但没有得到该列表。如果我运行相同的代码,如果我将本地系统作为服务器,则会得到文件列表,但是当我应用相同的代码时,我就成功登录了,并且FTPClient
类的列表方法可以工作,但是listFiles()
, listNames()
不起作用。
import java.io.IOException;
import java.net.SocketException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.io.FileUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
/**
*
* @author admin
*/
public class ListFileOfServerCheck {
public static void main(String args[]) throws SocketException, IOException{
FTPClient client = new FTPClient();
ArrayList dirList=new ArrayList();
client.connect("myserver");
client.login("vishal", "vishal");
if(client.isConnected())
System.out.println("connected");
int i=0;
System.out.println("number of files on server="+client.list());
String[] names = null;
int itration=1;
while(names==null){
System.out.println(itration +"th itration");
names = client.listNames();
itration++;
}
client.logout();
client.disconnect();
}
}
最佳答案
问题是登录FTP时当前的目录是什么。尝试使用:
client.listNames("/path/to/the/folder");
而不是依赖当前的工作目录。
最好检查一下返回的结果
client.login(...)