Как сравнить последнюю модификацию FTPClient File с локальным файлом?
У меня есть два файла, один на сервере и один локальный, я хочу получить последние изменения обоих файлов и посмотреть, какой из них более новый. Я сделал метод, но я всегда получаю один и тот же результат. Я пытался проверить каждую сторону, но оператор 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, но он всегда на один час позади. Это о чем-нибудь с часовыми поясами?
Или есть идея сравнить время последнего изменения одного файла сервера с локальным?
1 ответ
Не существует стандартного способа узнать часовой пояс ftp-сервера, но вы можете загрузить файл, а затем рассчитать разницу во времени между временем файла, сообщаемым FTP и локально. Это должен быть метод, выполняющийся в качестве первого шага вашей программы для инициализации логики часового пояса в каждом вашем клиентском приложении.