Files.getLastModifiedTime în Java

Returnează momentul ultimei modificări a unui fișier, ca FileTime; util pentru a afla care fișier e mai nou.

Sintaxă
static FileTime getLastModifiedTime(Path cale, LinkOption... optiuni) throws IOException
static Path setLastModifiedTime(Path cale, FileTime timp) throws IOException

Ce face Files.getLastModifiedTime

Files.getLastModifiedTime(cale) dă data și ora la care fișierul a fost modificat ultima dată, ca obiect FileTime. Îl transformi în Instant cu toInstant() sau în milisecunde cu toMillis(). Două valori FileTime se compară cu compareTo.

Perechea Files.setLastModifiedTime(cale, timp) schimbă această dată. Ora este în UTC (afișată cu Z la final); pentru ora României o convertești cu atZone(ZoneId.of("Europe/Bucharest")).

Parametri

Parametru Descriere
cale Fișierul verificat.
optiuni Opțional: LinkOption.NOFOLLOW_LINKS.

Ce returnează

Un FileTime cu momentul ultimei modificări.

Exemple

Exemplul 1: Citirea și schimbarea datei modificării

Setăm o dată fixă, ca rezultatul să fie același la fiecare rulare, apoi o citim înapoi.

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.FileTime;
import java.time.Instant;
import java.time.ZoneId;

public class Main {
    public static void main(String[] args) throws IOException {
        Path cale = Files.writeString(Path.of("contract.txt"), "Contract de închiriere");
        Files.setLastModifiedTime(cale, FileTime.from(Instant.parse("2026-03-15T10:30:00Z")));

        FileTime t = Files.getLastModifiedTime(cale);
        System.out.println("UTC: " + t);
        System.out.println("România: " + t.toInstant().atZone(ZoneId.of("Europe/Bucharest")).toLocalDateTime());
    }
}

Rezultat

UTC: 2026-03-15T10:30:00Z
România: 2026-03-15T12:30

Exemplul 2: Care copie este mai nouă?

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.FileTime;
import java.time.Instant;

public class Main {
    public static void main(String[] args) throws IOException {
        Path laptop = Files.writeString(Path.of("lucrare-laptop.docx"), "v1");
        Path stick = Files.writeString(Path.of("lucrare-stick.docx"), "v2");
        Files.setLastModifiedTime(laptop, FileTime.from(Instant.parse("2026-05-10T08:00:00Z")));
        Files.setLastModifiedTime(stick, FileTime.from(Instant.parse("2026-05-12T19:45:00Z")));

        FileTime a = Files.getLastModifiedTime(laptop);
        FileTime b = Files.getLastModifiedTime(stick);
        Path maiNou = a.compareTo(b) >= 0 ? laptop : stick;
        System.out.println("Versiunea mai nouă: " + maiNou);
    }
}

Rezultat

Versiunea mai nouă: lucrare-stick.docx

Greșeli frecvente

  • Compari două FileTime cu < sau ==: nu compilează sau compară referințe. Folosește compareTo sau equals.
  • Afișezi ora și o iei drept ora locală. FileTime.toString() este în UTC.

Comenzi înrudite

  • Files.size: Returnează mărimea unui fișier în octeți (bytes); literele cu diacritice ocupă câte doi octeți în UTF-8.
  • Instant: Un moment exact pe axa timpului, în UTC, măsurat în secunde și nanosecunde de la 1 ianuarie 1970.
  • ZoneId: Identifică un fus orar (Europe/Bucharest) cu regulile lui de oră de vară; of îl alege, systemDefault dă fusul sistemului.
  • Files: Clasa cu metode statice pentru lucrul cu fișiere și foldere: citire, scriere, copiere, mutare, ștergere, listare.