最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中讀取文件時(shí)間屬性之創(chuàng)建時(shí)間、修改時(shí)間、訪問時(shí)間的跨平臺(tái)實(shí)現(xiàn)

 更新時(shí)間:2025年08月20日 08:27:10   作者:三石成山  
在工作時(shí)候我們有時(shí)候需要獲取到文件的最后更新時(shí)間,根據(jù)最近更新時(shí)間,來處理其他業(yè)務(wù),這篇文章主要介紹了Java中讀取文件時(shí)間屬性之創(chuàng)建時(shí)間、修改時(shí)間、訪問時(shí)間的跨平臺(tái)實(shí)現(xiàn),需要的朋友可以參考下

1. 引言

在文件管理、備份同步或日志分析等場(chǎng)景中,準(zhǔn)確獲取文件的 創(chuàng)建時(shí)間(Creation Time)、修改時(shí)間(Last Modified Time)、訪問時(shí)間(Last Access Time) 是常見需求。

Java 提供了多種方式讀取這些時(shí)間屬性,但不同方法的 精度、跨平臺(tái)兼容性 差異顯著。本文對(duì)比傳統(tǒng) File 類與現(xiàn)代 BasicFileAttributes 的優(yōu)劣,并給出跨平臺(tái)解決方案。

2. 傳統(tǒng)方法:File.lastModified()的局限性

2.1 方法說明

File file = new File("test.txt");
long lastModified = file.lastModified(); // 返回毫秒時(shí)間戳

2.2 局限性

問題說明
僅支持修改時(shí)間無法獲取創(chuàng)建時(shí)間、訪問時(shí)間。
精度問題某些文件系統(tǒng)(如 FAT32)僅記錄到秒級(jí),毫秒部分為 0。
平臺(tái)不一致性在 Linux 上,lastModified() 可能返回 inode 變更時(shí)間而非內(nèi)容修改時(shí)間。
性能開銷每次調(diào)用觸發(fā)系統(tǒng)調(diào)用,高頻操作時(shí)效率低。

3. 現(xiàn)代方法:BasicFileAttributes(NIO.2)

Java 7 引入的 NIO.2(java.nio.file)通過 BasicFileAttributes 提供更全面的時(shí)間屬性支持。

3.1 核心方法

方法返回類型說明
creationTime()FileTime文件創(chuàng)建時(shí)間(可能不可用)。
lastModifiedTime()FileTime最后修改時(shí)間。
lastAccessTime()FileTime最后訪問時(shí)間。

3.2 跨平臺(tái)行為差異

操作系統(tǒng)文件系統(tǒng)creationTime() 支持注意事項(xiàng)
WindowsNTFS? 精確到納秒FAT32 不支持創(chuàng)建時(shí)間。
Linuxext4/xfs?? 可能返回 lastModifiedTime依賴文件系統(tǒng)是否記錄 inode 創(chuàng)建時(shí)間。
macOSAPFS? 精確到納秒HFS+ 可能僅支持秒級(jí)精度。

3.3 代碼示例

import java.nio.file.*;
import java.nio.file.attribute.*;

public class FileTimeReader {
    public static void printFileTimes(String filePath) throws IOException {
        Path path = Paths.get(filePath);
        BasicFileAttributes attrs = Files.readAttributes(
            path, BasicFileAttributes.class);

        System.out.println("創(chuàng)建時(shí)間: " + attrs.creationTime());
        System.out.println("修改時(shí)間: " + attrs.lastModifiedTime());
        System.out.println("訪問時(shí)間: " + attrs.lastAccessTime());
    }

    public static void main(String[] args) throws IOException {
        printFileTimes("test.txt");
    }
}

輸出示例(Linux ext4):

創(chuàng)建時(shí)間: 2023-05-20T10:15:30Z
修改時(shí)間: 2023-05-21T14:20:45Z
訪問時(shí)間: 2023-05-22T09:10:12Z

4. 擴(kuò)展:不同文件系統(tǒng)的特殊處理

4.1 Windows(NTFS/FAT32)

  • NTFS

    • 完整支持三個(gè)時(shí)間,精度為 100 納秒。

    • 通過 DosFileAttributes 可檢查隱藏/只讀屬性。

  • FAT32

    • creationTime() 通常返回 null

    • 時(shí)間精度僅到秒級(jí)。

4.2 Linux/Unix(ext4/xfs)

  • ext4

    • creationTime() 可能返回 inode 創(chuàng)建時(shí)間(需內(nèi)核 >= 4.1)。

    • 默認(rèn)不記錄訪問時(shí)間(需掛載時(shí)啟用 relatime 或 strictatime)。

  • 網(wǎng)絡(luò)文件系統(tǒng)(NFS)

    • 時(shí)間屬性依賴服務(wù)端實(shí)現(xiàn),可能不一致。

4.3 macOS(APFS/HFS+)

  • APFS

    • 完整支持三個(gè)時(shí)間,納秒級(jí)精度。

  • HFS+

    • creationTime() 可能不可靠。

5. 最佳實(shí)踐與注意事項(xiàng)

  1. 優(yōu)先使用 BasicFileAttributes

    • 避免遺留 File 類,因其功能有限。

  2. 處理 creationTime() 為 null 的情況

    FileTime creationTime = attrs.creationTime();
    if (creationTime == null) {
        creationTime = attrs.lastModifiedTime(); // 降級(jí)方案
    }
  3. 時(shí)間精度轉(zhuǎn)換

    long millis = creationTime.toMillis(); // 轉(zhuǎn)為毫秒
    Instant instant = creationTime.toInstant(); // 轉(zhuǎn)為 Instant
  4. 性能優(yōu)化

    • 批量處理文件時(shí),復(fù)用 BasicFileAttributes 對(duì)象。

6. 總結(jié)

需求推薦方法跨平臺(tái)建議
僅需修改時(shí)間File.lastModified()簡(jiǎn)單但功能有限。
需要三個(gè)時(shí)間BasicFileAttributes首選,注意 creationTime() 兼容性。
高精度時(shí)間結(jié)合 FileTime 和 Instant處理納秒級(jí)數(shù)據(jù)。

最終建議

  • 在跨平臺(tái)應(yīng)用中,始終檢查 creationTime() 的返回值是否為 null。

  • 對(duì)時(shí)間敏感的場(chǎng)景(如備份工具),優(yōu)先測(cè)試目標(biāo)文件系統(tǒng)的支持情況。

通過 BasicFileAttributes,開發(fā)者可以更可靠地獲取文件時(shí)間屬性,同時(shí)規(guī)避傳統(tǒng) File 類的局限性。

到此這篇關(guān)于Java中讀取文件時(shí)間屬性之創(chuàng)建時(shí)間、修改時(shí)間、訪問時(shí)間跨平臺(tái)實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java中讀取文件時(shí)間屬性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解讀Spring事務(wù)是如何實(shí)現(xiàn)的

    解讀Spring事務(wù)是如何實(shí)現(xiàn)的

    這篇文章主要介紹了Spring事務(wù)是如何實(shí)現(xiàn)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • java 面向?qū)ο竺嬖嚰\

    java 面向?qū)ο竺嬖嚰\

    這篇文章主要介紹了java 面向?qū)ο竺嬖嚰\的相關(guān)資料,這里整理了面向?qū)ο蟮幕A(chǔ)知識(shí),幫助大家學(xué)習(xí)理解此部分的知識(shí),需要的朋友可以參考下
    2016-11-11
  • IDEA新手必備之各種快捷鍵詳解

    IDEA新手必備之各種快捷鍵詳解

    這篇文章主要介紹了IDEA新手必備之各種快捷鍵詳解,文中有非常詳細(xì)的快捷鍵介紹,對(duì)正在使用IDEA的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Spring+SpringMVC+Hibernate項(xiàng)目環(huán)境搭建的步驟(圖文)

    Spring+SpringMVC+Hibernate項(xiàng)目環(huán)境搭建的步驟(圖文)

    這篇文章主要介紹了Spring+SpringMVC+Hibernate項(xiàng)目環(huán)境搭建的步驟(圖文),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 基于JavaMail的Java實(shí)現(xiàn)復(fù)雜郵件發(fā)送功能

    基于JavaMail的Java實(shí)現(xiàn)復(fù)雜郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了基于JavaMail的Java實(shí)現(xiàn)復(fù)雜郵件發(fā)送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • java正則表達(dá)式匹配規(guī)則超詳細(xì)總結(jié)

    java正則表達(dá)式匹配規(guī)則超詳細(xì)總結(jié)

    正則表達(dá)式并不僅限于某一種語言,但是在每種語言中有細(xì)微的差別,下面這篇文章主要給大家介紹了關(guān)于java正則表達(dá)式匹配規(guī)則的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • SpringBoot?Knife4j框架&Knife4j的顯示內(nèi)容的配置方式

    SpringBoot?Knife4j框架&Knife4j的顯示內(nèi)容的配置方式

    Knife4j框架是基于Swagger2開發(fā)的在線API文檔生成工具,主要功能包括自動(dòng)生成API文檔、接口文檔展示、接口測(cè)試工具、接口權(quán)限控制和在線調(diào)試,該框架支持通過注解自動(dòng)生成詳細(xì)的接口文檔,開發(fā)者可以直接在文檔界面進(jìn)行接口測(cè)試和調(diào)試
    2024-09-09
  • Spring Boot 數(shù)據(jù)緩存與性能優(yōu)化實(shí)戰(zhàn)指南

    Spring Boot 數(shù)據(jù)緩存與性能優(yōu)化實(shí)戰(zhàn)指南

    本文主要介紹了SpringBoot數(shù)據(jù)緩存與性能優(yōu)化的相關(guān)內(nèi)容,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2026-04-04
  • Spring Security常用過濾器實(shí)例解析

    Spring Security常用過濾器實(shí)例解析

    這篇文章主要介紹了Spring Security常用過濾器實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 老生常談java垃圾回收算法(必看篇)

    老生常談java垃圾回收算法(必看篇)

    下面小編就為大家?guī)硪黄仙U刯ava垃圾回收算法(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05

最新評(píng)論

屯昌县| 桂东县| 罗甸县| 梁河县| 荥阳市| 右玉县| 水富县| 开平市| 揭西县| 江陵县| 辉县市| 临颍县| 八宿县| 佛冈县| 蓬莱市| 太湖县| 长阳| 柳江县| 宁海县| 东阳市| 始兴县| 铜陵市| 甘孜| 当阳市| 将乐县| 娱乐| 建平县| 集安市| 呼和浩特市| 文昌市| 深州市| 嫩江县| 定南县| 南投市| 金溪县| 尖扎县| 高平市| 汤原县| 乐清市| 晋宁县| 康平县|