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

Fetching last modified date of a file in FTP server using FTPClient.getModificationTime yields null

我正在尝试从 FTP 中获取文件的最后修改日期 environment.The 结果与预期不符。

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

通过使用 FTPFile.getTimestamp().getTime() 我得到 错误的最后修改时间 (即真正的最后修改时间是今天,我得到 2 月 18 日星期三 02:55:22 2004 年美国东部时间).

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

提前致谢。

FTPClient.getModificationTimereturnsnull当服务器returns错误响应MDTM命令。通常这意味着:

  • “文件路径”不存在;或
  • 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());

另见

我发现了我做的错误。

我正在使用 SFTP 环境而不是 FTP 环境。我不得不使用 SFTP 而不是 FTP.

的 jar 文件和其他功能

谢谢。