2015-06-26 6 views
0

Я автоматизирую обработку плоских файлов, полученных с мэйнфрейма, и смущенно создаю и модифицировал время. Файлы создаются на мэйнфрейме, а затем отправляются по электронной почте требуемым лицам. Затем пользователи сохраняют файл по электронной почте (Outlook) и выполняют все, что они делают с ними.Недостаток BasicFileAttributes: какое настоящее время создания?

Для этой автоматизации файл будет обрабатываться автоматически. Мне нужно сообщить пользователю, когда был загружен последний файл, и дать им возможность загрузить более новый файл.

Моя проблема со временем: я получаю дату/время создания, которое позднее последнего времени. Используя этот код:

try { 
     DateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
     DateFormat cstFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     utcFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
     cstFormat.setTimeZone(TimeZone.getTimeZone("America/Chicago")); 

     Path filePath = Paths.get("C:/data/KWJFLTD.XLS"); 
     BasicFileAttributes basicAttr = Files.readAttributes(filePath, BasicFileAttributes.class); 

     FileTime creationTime = basicAttr.creationTime(); 
     FileTime modifiedTime = basicAttr.lastModifiedTime(); 
     String cTime = creationTime.toString(); 
     String mTime = modifiedTime.toString(); 
     Date dc = utcFormat.parse(cTime); 
     Date dm = utcFormat.parse(mTime); 

     cTime = cstFormat.format(dc); 
     mTime = cstFormat.format(dm); 

     System.out.println("Creation Time: " + cTime); 
     System.out.println("Modified Time: " + mTime); 

    } catch (IOException ex) { 
     Logger.getLogger(FAULoad.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (ParseException ex){ 
     Logger.getLogger(FAULoad.class.getName()).log(Level.SEVERE, null, ex); 
    } 

Я получаю этот результат:

Creation Time: 2015-06-24 15:25:12 
Modified Time: 2015-06-24 02:28:05 

я в конечном итоге со временем создания после последнего изменения времени. Это потому, что время создания изменяется, когда оно сохраняется из электронной почты? В этой ситуации, учитывая, что (теоретически) никаких изменений не происходит с момента ее создания, будет ли последнее измененное время совпадать с датой создания?

+0

Почему у вас есть два разных объекта dateformat? – Mackiavelli

+1

Это просто предположение, но может быть, что время модификации было временем, когда контент в целом был последним изменен, а время создания - это время, когда этот конкретный файл был создан. Если вы копируете файл, время создания (копии) может быть выполнено после времени модификации (содержимого). См. Здесь, например: http://answers.microsoft.com/en-us/windows/forum/windows_xp-files/how-can-the-date-created-be-later-than-the-date/9e625c0d-8694 -4c8e-8a27-3ce74687aa53 – Thomas

+0

@mackivelli: один для UTC, другой - CST ... плюс, я хочу сбросить десятичную часть секунд. –

ответ

0

Согласно Microsoft Documentation (ссылка относится к Win XP, но также относится к Win 10), время модификации - это время, когда содержимое файла было записано последним, а время создания - время создания определенного файла.

Таким образом, если вы скопируете файл, дата изменения не изменится, поскольку контент не был записан/изменен, но был создан новый файл (копия) и, следовательно, время создания будет после времени модификации.

Смежные вопросы