gpt4 book ai didi

java - BasicFileAttributes混淆: what's the real creation time?

转载 作者:行者123 更新时间:2023-12-01 11:22:28 25 4
gpt4 key购买 nike

我正在自动处理从大型机接收的平面文件,但对创建和修改时间感到困惑。文件在大型机上创建,然后通过电子邮件发送给所需的个人。然后,个人从电子邮件 (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

我最终得到的创建时间晚于最后修改时间。这是因为从电子邮件保存时创建时间发生了变化吗?在这种情况下,假设自生成以来(理论上)没有进行任何修改,那么最后修改时间是否与创建日期相同?

最佳答案

根据Microsoft Documentation (该链接与 Win XP 相关,但最有可能也适用于 Win 10)修改时间是最后写入文件内容的时间,而创建时间是创建特定文件的时间。

因此,如果您复制文件,修改日期不会改变,因为没有写入/更改任何内容,但已经创建了一个新文件(副本),因此创建时间将晚于修改时间。

关于java - BasicFileAttributes混淆: what's the real creation time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31074931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com