FTPClient 获取文件的秒级最后修改时间

二次开发DataX ftpreader

需要精确获取ftp端文件的最后修改时间,

开始使用的是

FTPFile[] ftpFiles = ftpClient.listFiles(new String(fileName.getBytes(),FTP.DEFAULT_CONTROL_ENCODING));
if(ftpFiles != null){
if (ftpFiles.length == 1 && ftpFiles[0].isFile()) {
lastModifyTime = ftpFiles[0].getTimestamp().getTimeInMillis() +
ftpFiles[0].getTimestamp().getTimeZone().getOffset(0);

// System.out.println(lastModifyTime);
}

但是获取到的修改时间精确度只能到分钟,取不到秒和毫秒值,

改用

            FTPFile[] ftpFiles = ftpClient.listFiles(new String(fileName.getBytes(),FTP.DEFAULT_CONTROL_ENCODING));
            if(ftpFiles != null){
                if (ftpFiles.length == 1 && ftpFiles[0].isFile()) {
//                    lastModifyTime = ftpFiles[0].getTimestamp().getTimeInMillis() +
//                            ftpFiles[0].getTimestamp().getTimeZone().getOffset(0);
                    String lastModifyTimeStr = ftpClient.getModificationTime(fileName).substring(4);
                    SimpleDateFormat sdf =  new SimpleDateFormat( "yyyyMMddHHmmss");
                    Date startTimeDate = sdf.parse(lastModifyTimeStr);
                    lastModifyTime = startTimeDate.getTime() + ftpFiles[0].getTimestamp().getTimeZone().getOffset(0);
//                    System.out.println(lastModifyTime);
                }
            }

这样获取到精确的秒了,但是获取不到毫秒,

但已经满足筛选控制需求,

原文地址:https://www.cnblogs.com/1394htw/p/13328689.html