我有两个文件,一个在服务器中,一个在本地,我想获取这两个文件的最后修改并查看哪个文件较新。我做了一个方法,但总是得到相同的结果。我尝试了每一侧的测试,但 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/