Java java.nio.file.Files getLastModifiedTime()Methode
java.nio.file.FilesDie Files-Klasse ist eine wichtige Utility-Klasse für Dateioperationen im Java-NIO-Paket (New I/O). DiegetLastModifiedTime()Methode ist eine sehr praktische Methode, mit der die letzte Änderungszeit einer Datei oder eines Verzeichnisses ermittelt wird.
Methodendefinition
throws IOException
Parameterbeschreibung
Path path
- Repräsentiert den Pfad der abzufragenden Datei oder des abzufragenden Verzeichnisses
- Dies ist ein
PathObjekt, das erstellt werden kann mit derPaths.get()method
LinkOption... options
- Optionaler Parameter, der verwendet wird, um anzugeben, wie symbolische Links behandelt werden
- Die übliche Option ist
LinkOption.NOFOLLOW_LINKS, die angibt, symbolischen Links nicht zu folgen - Wenn dieser Parameter nicht angegeben wird, werden symbolische Links standardmäßig verfolgt
Rückgabewert
Die Methode gibt einFileTimeObjekt, das den Zeitpunkt der letzten Änderung der Datei oder des Verzeichnisses darstellt.FileTimeDie Klasse bietet mehrere Methoden zum Umgang mit Zeitwerten:
toMillis(): Gibt die Anzahl der Millisekunden seit 1970-01-01T00:00:00Z zurücktoInstant(): Gibt einInstantObjekttoString(): Gibt die Zeitzeichenfolge im ISO-8601-Format zurück
Ausnahmebehandlung
Die Methode kann die folgenden Ausnahmen auslösen:
IOException: Wenn ein I/O-Fehler auftrittSecurityException: Wenn nicht genügend Berechtigungen für den Zugriff auf die Datei vorhanden sindNullPointerException: Wenn der Parameter path null ist
Anwendungsbeispiele
Grundlegende Verwendung
Beispiel
import java.io.IOException;
public class LastModifiedExample {
public static void main(String[] args) {
Path path = Paths.get("example.txt");
try {
FileTime lastModifiedTime = Files.getLastModifiedTime(path);
System.out.println("Letzte Änderungszeit: " + lastModifiedTime);
System.out.println("Millisekunden seit der Epoche: " + lastModifiedTime.toMillis());
} catch (IOException e) {
System.err.println("Fehler beim Abrufen der letzten Änderungszeit: " + e.getMessage());
}
}
}
Symbolischen Links nicht folgen
Beispiel
FileTime lastModifiedTime = Files.getLastModifiedTime(
path,
LinkOption.NOFOLLOW_LINKS
);
// Zeit verarbeiten...
} catch (IOException e) {
e.printStackTrace();
}
Anwendungsszenarien aus der Praxis
- Dateisynchronisierungstools: Erkennen, ob eine Datei geändert wurde, und entscheiden, ob eine Synchronisierung erforderlich ist
- Cache-Systeme: Prüfen, ob Ressourcendateien aktualisiert wurden, und feststellen, ob der Cache erneuert werden muss
- Backup-Systeme: Nur Dateien sichern, die seit dem letzten Backup geändert wurden
- Build-Tools: Prüfen, ob Quelldateien geändert wurden, und entscheiden, ob eine Neukompilierung erforderlich ist
Hinweise
- Verschiedene Dateisysteme können eine unterschiedliche Genauigkeit für die "letzte Änderungszeit" aufweisen
- Auf manchen Betriebssystemen wird beim Ändern des Dateiinhalts möglicherweise nicht die letzte Änderungszeit des Verzeichnisses aktualisiert
- Bei symbolischen Links wird standardmäßig die letzte Änderungszeit der Zieldatei zurückgegeben
- Bei der Verwendung in einer Multithread-Umgebung sollte auf Synchronisationsprobleme geachtet werden
Leistungsüberlegungen
getLastModifiedTime()Die Performance der Methode ist normalerweise gut, da sie nur auf die Metadaten der Datei zugreifen muss, ohne den Dateiinhalt zu lesen. In den folgenden Fällen kann es jedoch zu Performance-Einbußen kommen:
- Netzwerkdateisysteme (NFS, SMB usw.)
- Bei einer großen Anzahl von Dateioperationen
- Umgebungen mit vielen Sicherheitsprüfungen
Vergleich der Alternativen
undFile.lastModified()Comparison
java.io.FileDie Klasse verfügt ebenfalls über eine ähnliche MethodelastModified(), die Hauptunterschiede sind wie folgt:
| Merkmal | Files.getLastModifiedTime() | File.lastModified() |
|---|---|---|
| Rückgabetyp | FileTime | long (Millisekunden) |
| Ausnahmebehandlung | Wirft IOException | Gibt 0 zurück, um einen Fehler anzuzeigen |
| NIO-Unterstützung | Ja | nein |
| Umgang mit symbolischen Links | Konfigurierbar | Folgt immer |
Empfohlene Anwendungsszenarien
- Für neuen Code wird empfohlen, zu verwenden
Files.getLastModifiedTime() - Verwenden, wenn eine genauere Zeitsteuerung erforderlich ist
Files.getLastModifiedTime() - Kann in einfachen Szenarien oder zur Pflege von Legacy-Code verwendet werden
File.lastModified()
Zusammenfassung
Files.getLastModifiedTime()ist eine einfache, aber leistungsstarke Methode in Java NIO, mit der die Informationen über die letzte Änderungszeit des Dateisystems abgerufen werden. Verglichen mit der traditionellenFile.lastModified()bietet es eine bessere Ausnahmebehandlung und eine flexiblere Möglichkeit, Zeit darzustellen. Bei der Entwicklung von Anwendungen im Zusammenhang mit der Dateiverarbeitung kann die angemessene Verwendung dieser Methode die Robustheit und Wartbarkeit des Codes verbessern.
Java java.nio.file.Files