java 文件访问时间_java获取文件的创建时间、修改时间和访问时间(含优化)

BasicFileAttributes

Java为了满足跨平台需要,其File类仅提供lastModified(),即文件的最近一次修改时间。原因是Linux不记录文件的创建时间。但是为Windows平台开发的程序需要读取文件的创建时间怎么办?

BasicFileAttributes bAttributes = null;

try {

bAttributes = Files.readAttributes(file.toPath(),

BasicFileAttributes.class);

} catch (IOException e) {

e.printStackTrace();

}

String fileName = file.getName();

// 修改时间

String changeTime = bAttributes.lastModifiedTime().toString();

// 修正格式和时区

changeTime = fixStrDateFormat(changeTime);

系统中其实有些文件和文件夹没有创建时间,此时BasicFileAttributes 类会将修改时间返回。

加快时间处理

注意一点:我没有直接使用常规的SimpleDateFormat类来进行时间的格式化。

测试发现,使用SimpleDateFormat 速度 非常慢,而我完成数据库课程大作业时需要对一个硬盘的全部文件进行读取信息并插入数据库,在10000数量级的情况下,这种速度是难以接受的。

而通过直接获取lastModifiedTime().toString()的方式,我们可以快速得到一个形如“2017-05-12T18:37:45.461793Z”的字符串,使用subString简单处理即可得到“2017-05-12 18:37:45.45”格式的字符串。

然而 与Windows系统的属性信息对照发现,直接获取的时间并不正确,准确地说是提前了8个小时——对应东八区的北京时间,很明显这是格林尼治时间。

接下来就需要自己完成时间日期的转化了,过程比较基础,不再赘述。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值