Java File equals() Methode

Java File Java File


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

public boolean equals(Object obj)

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:

  1. Konvertieren der Pfadtrennzeichen in das Standardtrennzeichen des Systems
  2. Auflösen des relativen Pfades.und..
  3. 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

import java.io.File;

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

import java.io.File;

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

import java.io.File;

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

  1. equals()Die Methode prüft nicht, ob die Dateien tatsächlich im Dateisystem vorhanden sind; sie vergleicht nur Pfade
  2. Wenn das Argument nichtFileein Objekt ist, gibt die Methode zurückfalse
  3. Bei symbolischen Links vergleicht die Methode den Pfad des symbolischen Links selbst, nicht den Pfad, auf den er zeigt
  4. 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 file1 = new File("test.txt");
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 Java File

Andere Erweiterungen