java - 使用 FTPClient.getModificationTime 获取 FTP 服务器中文件的最后修改日期会产生 null

标签 java ftp timestamp apache-commons-net

我正在尝试从 FTP 环境中获取文件的最后修改日期。结果与预期不同。

通过使用 ftpClient.getModificationTime("File path") 我得到了 null

通过使用 FTPFile.getTimestamp().getTime() 我得到了错误的上次修改时间(即真正的上次修改时间是今天,我得到的是 Wed 2004 年 2 月 18 日 02:55:22 EST)。

如何获得正确的最后修改时间? File at FTP

提前致谢。

最佳答案

FTPClient.getModificationTime服务器对MDTM命令返回错误响应时返回null。通常这意味着:

  • “文件路径”不存在;或
  • FTP 服务器不支持MDTM 命令。

检查 FTPClient.getReplyString() .


如果发现 FTP 服务器不支持 MDTM 命令,您将不得不使用其他方法来检索时间戳。如果不支持 MDTM,则 MLSD 也不会。

在这种情况下,唯一的其他方法是使用 LIST 命令检索所有文件的列表并查找您需要的文件 - 使用 FTPClient.listFiles() .

FTPFile[] remoteFiles = ftpClient.listFiles(remotePath);

Arrays.sort(remoteFiles,
    Comparator.comparing((FTPFile remoteFile) -> remoteFile.getTimestamp()).reversed());

FTPFile latestFile = remoteFiles[0];
System.out.println(
    "Latest file is " + latestFile.getName() +
    " with timestamp " + latestFile.getTimestamp().getTime().toString());

另见 Make FTP server return files listed by timestamp with Apache FTPClient .

关于java - 使用 FTPClient.getModificationTime 获取 FTP 服务器中文件的最后修改日期会产生 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49623415/

相关文章:

Spring Boot Hibernate 无法反序列化 : invalid stream header: 3433302E

java - 创建一个始终使用它来扩展类的泛型

java - 如何使用 Java 中另一个对象的属性对对象列表进行排序?

java - 计算总工资、储蓄和投资

ftp - Proftpd 无法在被动模式下工作

c++ - 使用 QFtp 下载单个 .txt

Java 无法解析日期异常 yyyyMMdd h :m a

java - OpenCV4Android 错误 : Assertion failed in Core. minMaxLoc(mROI) 方法

c# - 使用 WinSCP .NET 程序集从 FTP 服务器下载除特定文件夹之外的所有文件

java - 尝试为使用 java 的 android 聊天创建时间戳 "mm/dd/yyyy hh:mm a"