我已将以下代码编写为连接到远程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命令来实现这一点吗?
我已经检查了从ftp获取最新文件的问题。这种方法的问题在于,我们必须先使用a排序文件,Comparator然后重命名并将其移动到其他文件夹(以修改顺序获取它们)。如果文件超过1000个,则对它们进行排序将成为一项耗时的操作!
编辑:
而且,检索文件并对文件进行排序还有另一个问题。使用seconds时没有任何信息ftpFile.getTimestamp()。它仅精确到分钟。