FTPClient.listFiles不以秒为单位返回时间

时间:2015-03-27 12:27:53

标签: java apache ftp ftp-client

private static void getFTPFileProperties(FTPClient client,
            String ftpLocation, String pattern) throws IOException {
    FTPFile[] fileList=null;
    fileList = client.listFiles();
    for(int i=0;i<fileList.length;i++)
    {
        FTPFile file= fileList[0];
        Calendar cal = file.getTimestamp();
        DateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(dateFormater.format(cal.getTime()));
    }
}

我编写了上面的函数来检索文件的详细信息。但不知何故,我正在检索文件中没有秒部分的细节。 我正在检索lastModifiedDate 2013-08-08 00:00:00,其实际lastModifiedDate2013-08-08 12:53:27 PM

1 个答案:

答案 0 :(得分:2)

FTPClient.listFiles使用古老的LIST命令。使用该命令,FTP服务器返回类似于Unix ls命令的列表是很常见的。对于旧文件(超过一年),它仅显示日精度的时间戳。

如今,您应该始终使用FTPClient.mlistDir,它使用现代MLSD command,它始终以第二精度检索时间戳。

public FTPFile[] mlistDir() throws IOException

当然,除非你连接到一个古老的FTP服务器,否则它不支持MLSD命令。

请注意,自Apache Commons Net 3.0起支持mlistDir