java - 如何将FTPClient文件的最后修改与本地文件进行比较?

标签 java file-io apache-commons ftp-client last-modified

我有两个文件,一个在服务器中,一个在本地,我想获取这两个文件的最后修改并查看哪个文件较新。我做了一个方法,但总是得到相同的结果。我尝试了每一侧的测试,但 if 语句总是做出相同的决定。

这是我的代码:

public void SyncCheck(FTPClient ftpClient, String remoteFilePath, String savePath) throws IOException, ParseException{
        String time = ftpClient.getModificationTime(remoteFilePath);
        Date remoteFileDate = timeSplitter(time);
        Date LocalFileDate = new Date(new File(savePath).lastModified());

        if(remoteFileDate.after(LocalFileDate)){
            System.out.println("Remote File is newer: " + remoteFileDate);
        }
        else{
            System.out.println("nothing");
            System.out.println("Remote " + remoteFileDate);
            System.out.println("Local " + LocalFileDate);
        }
    }

    public Date timeSplitter(String time) throws ParseException{
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
        String timePart = time.split(" ")[1];
        Date modificationTime = dateFormat.parse(timePart);
        return modificationTime;
}

结果总是这样:

nothing
Remote Fri Apr 03 02:20:30 BST 2015
Local Fri Apr 03 03:12:58 BST 2015

无论远程文件是新的还是旧的。我注意到的另一个问题是远程文件是在 03:20:30 修改的,但总是晚一小时。与时区有关吗?

或者有什么想法可以比较一个服务器文件与本地文件的上次修改时间吗?

最佳答案

没有标准的方法来了解 ftp 服务器时区,但您可以做的是上传文件,然后计算 FTP 报告的文件时间与本地时间之间的时间差。这必须是作为程序的第一步运行的方法,用于初始化每个客户端应用程序中的时区逻辑。

关于java - 如何将FTPClient文件的最后修改与本地文件进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29425471/

相关文章:

java - 为什么要复制的 Bintray Maven 依赖项片段包含 <type>pom</type>

java - Wicket 中的弹出窗口(x 可编辑)

C: 无法解密 Openssl 消息

android - SD卡上的文件IO性能

java - OpenJPA 登录到 Websphere 中的单独文件

java - 公共(public)链部署

java - JPA CAN_NOT_JOIN_TO_BASIC

java - 是否可以在 Android 模拟器上运行 viber

java - 使用扫描仪时无此类元素异常

java - 无法将任务从 build.gradle 移动到单独的 .gradle 文件中重新应用