Java File equals() Methode
equals()Die Methode ist in JavaFileEine von der Klasse bereitgestellte Instanzmethode, mit der zweiFileObjekte verglichen werden, um festzustellen, ob sie auf dieselbe Datei oder dasselbe Verzeichnis verweisen. Diese Methode wird geerbt vonObjectder Klasse, aberFilesie wird in der Klasse überschrieben, um eine spezifische Vergleichslogik zu implementieren.
Methodensyntax
Parameters
obj- Zum Vergleich mit dem aktuellenFilezu vergleichendes Objekt
Rückgabewert
Wenn zweiFileObjekte dieselbe Datei oder dasselbe Verzeichnis repräsentieren, dann wird zurückgegebentrue; andernfalls wird zurückgegebenfalse
Methodenmerkmale
Pfadvergleich
FileDie Klassen-equals()Methode vergleicht die abstrakten Pfade zweier Dateiobjekte, nicht die tatsächlichen Dateiinhalte. Sie berücksichtigt die Groß-/Kleinschreibung der Pfade, die vom zugrunde liegenden Betriebssystem abhängt:
- Unter Unix/Linux-Systemen wird bei Pfaden zwischen Groß- und Kleinschreibung unterschieden
- Unter Windows-Systemen wird bei Pfaden nicht zwischen Groß- und Kleinschreibung unterschieden
Normalisierung
Vor dem Vergleich normalisiert die Methode die Pfade, einschließlich:
- Konvertieren der Pfadtrennzeichen in das Standardtrennzeichen des Systems
- Auflösen des relativen Pfades
.und.. - Entfernen redundanter Trennzeichen
Unterschied zu ==
equals()Die Methode==hat einen wesentlichen Unterschied zum ==-Operator:
==Vergleicht, ob die Referenzen zweier Objekte gleich sind (Speicheradresse)equals()Vergleicht, ob die Inhalte zweier Objekte gleich sind
Anwendungsbeispiele
Beispiel 1: Grundlegender Vergleich
Beispiel
public class FileEqualsExample {
public static void main(String[] args) {
File file1 = new File("test.txt");
File file2 = new File("test.txt");
File file3 = new File("another.txt");
System.out.println(file1.equals(file2)); // Ausgabe true
System.out.println(file1.equals(file3)); // Ausgabe false
}
}
Beispiel 2: Vergleich von relativem und absolutem Pfad
Beispiel
public class RelativeAbsoluteComparison {
public static void main(String[] args) {
File relativeFile = new File("test.txt");
File absoluteFile = new File(relativeFile.getAbsolutePath());
System.out.println(relativeFile.equals(absoluteFile)); // Ausgabe true
}
}
Beispiel 3: Vergleich verschiedener Pfadformate
Beispiel
public class DifferentPathFormats {
public static void main(String[] args) {
// Auf Windows-Systemen
File file1 = new File("C:\\temp\\test.txt");
File file2 = new File("C:/temp/test.txt");
System.out.println(file1.equals(file2)); // Gibt unter Windows true aus
}
}
Hinweise
equals()Die Methode prüft nicht, ob die Dateien tatsächlich im Dateisystem vorhanden sind; sie vergleicht nur Pfade- Wenn das Argument nicht
Fileein Objekt ist, gibt die Methode zurückfalse - Bei symbolischen Links vergleicht die Methode den Pfad des symbolischen Links selbst, nicht den Pfad, auf den er zeigt
- Achten Sie bei der plattformübergreifenden Entwicklung auf Unterschiede in der Groß-/Kleinschreibung von Pfaden
Beziehung zu hashCode()
FileDie Klasse überschreibtequals()die Methode und überschreibt außerdemhashCode()die Methode, wodurch sichergestellt wird, dass gleicheFileObjekte denselben Hashcode haben. Dies ist Teil des Java-Objektvertrags und wichtig für die Verwendung vonFileObjekten in Hash-Sammlungen.
Beispiel
File file2 = new File("test.txt");
System.out.println(file1.hashCode() == file2.hashCode()); // Ausgabe true
Zusammenfassung
File.equals()Die Methode ist ein effektives Werkzeug zum Vergleichen von Dateipfaden und bietet mehr praktische Funktionalität als ein einfacher Referenzvergleich. Zu verstehen, wie sie funktioniert, hilft, Dateipfadvergleiche korrekt durchzuführen und logische Fehler bei Dateioperationen zu vermeiden. Denken Sie daran, dass sie abstrakte Pfade vergleicht, nicht tatsächliche Dateiinhalte, was der wichtige Punkt bei der Verwendung dieser Methode ist.
Java File