java獲取文件的創建時間、修改時間和訪問時間(含優化)

BasicFileAttributes

Java爲了滿足跨平臺需要,其File類僅提供lastModified(),即文件的最近一次修改時間。原因是Linux不記錄文件的創建時間。但是爲Windows平臺開發的程序需要讀取文件的創建時間怎麼辦?

依然是 stack overflow 上的回答

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個小時——對應東八區的北京時間,很明顯這是格林尼治時間。

接下來就需要自己完成時間日期的轉化了,過程比較基礎,不再贅述。

發佈了30 篇原創文章 · 獲贊 9 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章