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); } }
这样获取到精确的秒了,但是获取不到毫秒,
但已经满足筛选控制需求,
诸业皆是自作自受,休咎祸福,尽从心生。