我在下面编写了这个代码来连接远程FTP服务器(CentOS 6中的vsftp). (为简洁起见,此处未显示异常处理)
FTPClient ftpClient = new FTPClient();
ftpClient.setConnectTimeout(20000);
ftpClient.connect(serverip);
ftpClient.enterLocalPassiveMode();
ftpClient.login(username, password);
if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
ftpClient.disconnect();
throw new FTPConnectionClosedException("Unable to connect to FTP server...");
}
FTPFile[] filesList = ftpClient.listFiles();
for (FTPFile tmpFile : filesList) {
if (tmpFile.isDirectory())
continue;
// processing the file
}
if (ftpClient.isConnected())
ftpClient.disconnect();
如果该FTP服务器中有100个文件,则此listFiles()根据字母顺序给出文件名列表.
A.txt
B.txt
Z.txt
a.txt
z.txt
有没有办法根据修改时间获取文件? (即最早的文件).此listFiles()使用LIST命令.是否有其他命令可根据修改时间列出文件.?由于这是一个Linux服务器,我们可以发送一些Linux命令来实现这一目标吗?
我已经检查了问题get latest file from ftp.这种方法的问题是我们必须使用Comparator对文件进行排序,然后重命名并将其移动到另一个文件夹(以修改顺序获取它们).如果文件超过1000个,那么对它们进行排序将是一项耗时的操作!
编辑:
更重要的是,检索文件并对它们进行排序还有另外一个问题.使用ftpFile.getTimestamp()时,它没有秒信息.它准确到几分钟.