【java】ftpClient獲取FTP文件時間與實際時間不符,相差8小時

導入的jar包: 

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

問題:  ftpFile.getTimestamp().getTimeInMillis()獲取到的時間和源文件的時間相差8小時

原因:  查閱資料後發現是ftp設置的是utc時間,和系統時間有8小時時差

解決:  查詢到文件時間後將時差偏移量進行補全

解決後代碼片段:

FTPFile[] files = ftpClient.listFiles();
//遍歷文件列表
for (FTPFile ftpFile : files) {
    //判斷是否根據正則表達式獲取文件列表
    if (StringUtils.isNotBlank(taskRule.getRegex())) {
        if (!ftpFile.getName().matches(taskRule.getRegex())) {
            continue;
        }
    }

    log.info("{}文件大小爲{}",ftpFile.getName(),ftpFile.getSize());
    //判斷文件大小是否爲0
    if (ftpFile.getSize() == 0) {
        log.info("{}文件大小爲0",ftpFile.getName());
        return null;
    }

    //utc時間加上時間差
    Long addTime = ftpFile.getTimestamp().getTimeInMillis() +
            ftpFile.getTimestamp().getTimeZone().getOffset(0);
    Date date = new Date(addTime);

    long pastHour = DateUtils.pastHour(date);
    log.info("name:{},fileTimeStamp:{},pastHour:{}", ftpFile.getName(), date, pastHour);
    if (pastHour < taskRule.getHourScope()) {
        fileNames.add(ftpFile.getName());
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章