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

白色玫瑰 程序猿

时间: 2023-07-11 阅读: 1 字数:2172

{}
使用Java快速获取大量文件的创建、修改、访问时间

目录

BasicFileAttributes

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

<a href="http://stackoverflow.com/questions/2723838/determine-file-creation-date-in-java">依然是 stack overflow 上的回答</a>

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个小时——对应东八区的北京时间,很明显这是格林尼治时间。

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

原文地址:https://blog.csdn.net/qq_30229209/article/details/72170925?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168904457216800186554440%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168904457216800186554440&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-3-72170925-null-null.142^v88^insert_down1,239^v2^insert_chatgpt&utm_term=java%E4%BC%98%E5%8C%96

本文章网址:https://www.sjxi.cn/detil/747a215e6e21438884ab1edf2a6556ce
最新评论
当前未登陆哦
登陆后才可评论哦

湘ICP备2021009447号

×

(穷逼博主)在线接单

QQ: 1164453243

邮箱: abcdsjx@126.com

前端项目代做
前后端分离
Python 爬虫脚本
Java 后台开发
各种脚本编写
服务器搭建
个人博客搭建
Web 应用开发
Chrome 插件编写
Bug 修复