我自动处理从大型机接收的平面文件,并对创建和修改时间感到困惑。文件在大型机上创建,然后通过电子邮件发送给所需的个人。然后,个人通过电子邮件(Outlook)保存文件,并执行他们用它们做的任何事情。
对于该自动化,将自动处理该文件。我需要让用户知道最后一个文件的加载时间,并为他们提供加载新文件的选项。
我的问题与时俱进:我的创建日期/时间晚于最后修改时间。使用此代码:
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 :(得分:1)
根据Microsoft Documentation(该链接与Win XP有关,但大多数情况也适用于Win 10),修改时间是文件内容上次写入的时间,而创建时间是时间已创建特定文件。
因此,如果复制文件,修改日期不会改变,因为没有内容已被写入/更改,但是已创建新文件(副本),因此创建时间将在修改时间之后。