Méthode equals() de la classe File en Java

Java File Java File


equals()La méthode est dans JavaFileUne méthode d'instance fournie par la classe, utilisée pour comparer deuxFileobjets pour voir s'ils pointent vers le même fichier ou répertoire. Cette méthode est héritée deObjectla classe, maisFileelle est redéfinie dans la classe pour implémenter une logique de comparaison spécifique.

Syntaxe de la méthode

public boolean equals(Object obj)

Parameters

obj- À comparer avec l'actuelFileobjet à comparer

Valeur de retour

Si deuxFileobjets représentent le même fichier ou répertoire, alors retournertrue; sinon, retournerfalse


Caractéristiques de la méthode

Comparaison de chemins

FileLa méthode de la classeequals()compare les chemins abstraits de deux objets fichier, et non le contenu réel des fichiers. Elle prend en compte la sensibilité à la casse des chemins, qui dépend du système d'exploitation sous-jacent :

  • Sur les systèmes Unix/Linux, les chemins sont sensibles à la casse
  • Sur les systèmes Windows, les chemins ne sont pas sensibles à la casse

Normalisation

Avant la comparaison, la méthode normalise les chemins, notamment :

  1. Conversion des séparateurs de chemin vers le séparateur par défaut du système
  2. Résolution du chemin relatif.et..
  3. Suppression des séparateurs redondants

Différence par rapport à ==

equals()La méthode==a une différence essentielle par rapport à l'opérateur == :

  • ==Compare si les références de deux objets sont identiques (adresse mémoire)
  • equals()Compare si le contenu de deux objets est identique

Exemples d'utilisation

Exemple 1 : Comparaison de base

Exemple

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)); // Sortie true
        System.out.println(file1.equals(file3)); // Sortie false
    }
}

Exemple 2 : Comparaison d'un chemin relatif et d'un chemin absolu

Exemple

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)); // Sortie true
    }
}

Exemple 3 : Comparaison de différents formats de chemin

Exemple

import java.io.File;

public class DifferentPathFormats {
    public static void main(String[] args) {
        // Sur les systèmes Windows
        File file1 = new File("C:\\temp\\test.txt");
        File file2 = new File("C:/temp/test.txt");
       
        System.out.println(file1.equals(file2)); // Affiche true sous Windows
    }
}

Notes

  1. equals()La méthode ne vérifie pas si les fichiers existent réellement dans le système de fichiers ; elle compare uniquement les chemins
  2. Si l'argument n'est pasFileun objet, la méthode renvoiefalse
  3. Pour les liens symboliques, la méthode compare le chemin du lien symbolique lui-même, et non le chemin vers lequel il pointe
  4. Lors du développement multiplateforme, faites attention aux différences de sensibilité à la casse des chemins

Relation avec hashCode()

FileLa classe redéfinitequals()la méthode et redéfinit égalementhashCode()la méthode, en veillant à ce que des objets égauxFileaient le même code de hachage. Cela fait partie du contrat d'objet Java et est important pour utiliserFileobjets dans des collections de hachage.

Exemple

File file1 = new File("test.txt");
File file2 = new File("test.txt");

System.out.println(file1.hashCode() == file2.hashCode()); // Sortie true

Résumé

File.equals()La méthode est un outil efficace pour comparer des chemins de fichiers, offrant une fonctionnalité plus pratique qu'une simple comparaison de références. Comprendre son fonctionnement aide à gérer correctement les comparaisons de chemins de fichiers et à éviter les erreurs logiques dans les opérations sur les fichiers. N'oubliez pas qu'elle compare des chemins abstraits, et non le contenu réel des fichiers, ce qui est le point clé à noter lors de l'utilisation de cette méthode.

Java File Java File

Autres extensions