我在我的一个应用程序中使用org.apache.commons.net.ftp.FTPClient
来与FTP服务器一起工作。我可以使用connect
,login
,pwd
和cwd
。但是,当我尝试list
文件时,它不会返回该目录中的文件列表,因为我确定该目录中有文件。我使用的方法是[FTPFile[] listFiles()
](http://commons.apache.org/net/api/org/apache/commons/net/ftp/FTPClient.html#listFiles(%29),它返回一个FTPFile
的空数组。
请在下面的代码片段中找到我正在尝试的代码片段:
String hostname = properties.getProperty("FTP_SERVER");
String user = properties.getProperty("FTP_USER");
String passwd = properties.getProperty("FTP_PASSWD");
FTPClient client = new FTPClient();
client.connect(hostname);
client.login(user, passwd);
String reply = client.getStatus();
System.out.println(reply);
client.enterRemotePassiveMode();
client.changeWorkingDirectory("/uploads");
FTPFile[] files = client.listFiles();
System.out.println(files.length);
for (FTPFile file : files) {
System.out.println(file.getName());
}
String[] fileNames = client.listNames();
if (fileNames != null) {
for (String file : fileNames) {
System.out.println(file);
}
}
client.disconnect();
发布于 2014-10-07 03:15:42
我也遇到了同样的问题,结果发现它无法解析服务器返回的文件列表。I连接到ftp服务器后的这一行(ftpClient.setParserFactory MyFTPFileEntryParserFactory());
public class MyFTPFileEntryParserFactory implements FTPFileEntryParserFactory {
private final static FTPFileEntryParser parser = new UnixFTPEntryParser() {
@Override public FTPFile parseFTPEntry(String entry) {
FTPFile ftpFile = new FTPFile();
ftpFile.setTimestamp(getCalendar(entry));
ftpFile.setSize(get(entry));
ftpFile.setName(getName(entry));
return ftpFile;
}
};
@Override public FTPFileEntryParser createFileEntryParser(FTPClientConfig config) throws ParserInitializationException {
return parser;
}
@Override public FTPFileEntryParser createFileEntryParser(String key) throws ParserInitializationException {
return parser;
}
}
https://stackoverflow.com/questions/2339855
复制相似问题