IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Resoudre les hardlinks


Sujet :

Java

  1. #1
    Membre chevronné
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Par défaut Resoudre les hardlinks
    J'ai commencé l'écriture, en Java, d'un outil de recherche de fichiers dupliqués. Je fais cela d'une part parce que les logiciels libres ou gratuits que j'ai trouvés ne me satisfont pas, et surtout parce que j'ai un programme à écrire pour valider une Unité d'Enseignement du CNAM.

    J'ai, à force de recherche, trouvé comment éviter d'être piégé par les symlinks (et les alias ?) en utilisant la méthode getCanonicalFile de la classe File. C'est bien, ça évite de tomber dans des boucles infinies, notemment au niveau des répertoires, mais également pour éviter de comparer bêtement un fichier avec lui-même.

    Le problème, c'est les hardlinks. En principe, ils ne sont pas permis pour les répertoires, la norme Posix l'interdit, mais dans les faits ça peut exister. Et même sans parler des répertoires, si on ne tient pas compte des hardlinks pour les fichiers, le risque est que mon outil se retrouve dans la situation ridicule de comparer un fichier avec lui-même.

    Bien sûr, je sais que c'est un brin futile d'écrire un logiciel de cette nature en Java, il vaudrait mieux l'écrire, par exemple, en C++, où je pourrais utiliser directement l'inode (sous Linux, parce que sous Windows en NTFS - où les hardlinks existent - je sais pas trop) pour éviter le problème.
    Mais je n'ai pas le temps de me mettre à jour en matière d'interfaces graphiques pour faire ça en C++ voire en C.

    Existe-t-il un moyen d'éviter le problème ? Pour l'heure, j'envisage un compteur de profondeur d'exploration qui envoit un message d'alerte si quelque chose d'anormal se produit (genre une arborescence de plus de 20 niveaux de profondeur c'est suspect), mais existe-t-il, à votre connaissance, en Java, un moyen de ne pas tomber dans ce piège ?

  2. #2
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Java permets de lancer des commandes système via la méthode Runtime.getRuntime().exex("maCommande").
    Peut-être qu'en récupérant le résultats d'un "ls" bien paramètré ça t'aidera.
    Ceci n'est qu'une idée, à tester donc...

Discussions similaires

  1. Les meilleurs cours et tutoriels C++
    Par Community Management dans le forum C++
    Réponses: 1
    Dernier message: 13/05/2015, 13h50
  2. [Débutant] 3 prb pour les resoudre
    Par mekup dans le forum VB.NET
    Réponses: 2
    Dernier message: 09/04/2013, 10h44
  3. Obligatoire : lisez les règles du forum : MAJ 06/08/2010
    Par Anomaly dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 0
    Dernier message: 03/07/2008, 13h46
  4. Pouvez vous m'aider a resoudres ces 3 exercices
    Par algorithmique dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 09/08/2002, 17h26
  5. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo