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 :

C'est quoi un lien symbolique


Sujet :

Java

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut C'est quoi un lien symbolique
    Bonjour à tous,
    Comme l'indique le titre de mon post je cherche à savoir ce que c'est un lien symbolique et quelle est la différence avec un lien physique?J'ai lu cette page mais je n'ai rien compris.Un exemple me faciliterait beaucoup mieux la compréhension et permettrait de voir à quoi ressemble ce fameux lien symbolique.

    Merci d'avance!!!

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Cette question ne concerne pas Java mais les systèmes de fichiers.

    Sous Unix (ou Linux), un lien symbolique est une sorte d'alias sur un chemin de fichier ou un dossier physique. Ainsi dans un dossier physique, on peut créer un fichier ou un dossier mais qui n'est physiquement dans ce dossier phyisque mais dans un autre dossier physique. Cela permet d'organiser ses fichiers physiques de différentes manières sans toucher au rangement physique.
    Par exemple tu peux installer plusieurs JDK ou JRE physiquement, et avoir un lien symbolique sur l'un de ces dossier. Tu fais pointer JAVA_HOME et PATH sur ce lien symbolique. Ainsi, tu peux changer de version de JRE simplement en changeant le lien symbolique (en le faisant pointer sur l'un ou l'autre des dossies physiques), sans avoir à modifier tes variables d'envonnements ou tes commandes. Cela peut aussi te permettre d'accèder plus facilement par un lien sybolique court à un dossier qui se trouve dans une arborescence compliquée, genre montée sur une machine distante avec 10 niveaux de sous-répertoires.

    Sous Windows NTFS, on peut aussi créer des liens symboliques.
    Sous Windows FAT, l'approche est différente : on utilise les raccourcis. Un raccourci est un petit fichier qui contient la référence du fichier ou dossier physique, et Windows gère ça de façon transparente, mais ça ne constitue pas réellement des liens symboliques.

    Par exemple, je créé une arborescence de dossiers C:\Temp\test\testniv2\testniv3 et j'y mets un ficheir texte : Nouveau document texte.txt.

    Dans c:\temp, je créé un lien symbolique symlink (c'est le nom du dossier, comme pour n'importe quel dossier) en disant qu'il pointe sur mon dossier physique C:\Temp\test\testniv2\testniv3

    Microsoft Windows [version 10.0.14393]
    (c) 2016 Microsoft Corporation. Tous droits réservés.
    
    c:\Temp>MKLINK /D symlink c:\Temp\test\testniv2\testniv3
    Lien symbolique créé pour symlink <<===>> c:\Temp\test\testniv2\testniv3
    
    c:\Temp>cd symlink
    
    c:\Temp\symlink>dir
     Le volume dans le lecteur C s’appelle OS
     Le numéro de série du volume est 163B-A4E3
    
     Répertoire de c:\Temp\symlink
    
    21/01/2017  23:37    <DIR>          .
    21/01/2017  23:37    <DIR>          ..
    21/01/2017  23:37                 0 Nouveau document texte.txt
                   1 fichier(s)                0 octets
                   2 Rép(s)   7*480*692*736 octets libres
    
    c:\Temp\symlink>
    Quand je me place dans c:\Temp\symlink, c'est comme si j'étais dans c:\Temp\test\testniv2\testniv3. Quand je fais dir, je vois le contenu de c:\Temp\test\testniv2\testniv3.

    En Java, on peut faire de même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    public class FichierDemo {
     
    	public static void main(String[] args) {
     
    		Path path = Paths.get("c:/temp/symlink");
     
    		try {
    			System.out.println("Lien symbolique : " + path);
    			showContent(path);
    			Path physical  = path.toRealPath();
    			System.out.println("Dossier physique: " + physical);
    			showContent(physical);
    		} catch (IOException e) { 
    			e.printStackTrace();
    		}
     
    	}
     
    	private static void showContent(Path dir) throws IOException {
    		System.out.println("Contenu de "+dir);
    		try(DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
    			for(Path path : stream) {
    				System.out.println(path);
    			}
    		}
    	}
     
    }
    Qui affiche :
    Lien symbolique : c:\temp\symlink
    Contenu de c:\temp\symlink
    c:\temp\symlink\Nouveau document texte.txt
    Dossier physique: C:\Temp\test\testniv2\testniv3
    Contenu de C:\Temp\test\testniv2\testniv3
    C:\Temp\test\testniv2\testniv3\Nouveau document texte.txt
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut
    Merci beaucoup pour ces précieuses précisions.

    Citation Envoyé par joel.drigo Voir le message
    Cette question ne concerne pas Java mais les systèmes de fichiers.
    Tout à fait.En fait je l'ai posé ici parce que je suis en train d'étudier l'API NIO2 et dans le tuto on parle très régulièrement de ces fameux liens symboliques dont j'ignorais vraiment l'importance et la forme.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. C'est quoi un lien mort ?
    Par andrianiaina dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 04/08/2011, 17h44
  2. C'est quoi, un lien ?
    Par evevev dans le forum La taverne du Club : Humour et divers
    Réponses: 8
    Dernier message: 20/06/2011, 16h48
  3. c'est quoi le lien entre UML et les SGBDR ?
    Par crypto_ dans le forum UML
    Réponses: 4
    Dernier message: 15/02/2009, 12h21
  4. Mon fichier est il un lien symbolique ?
    Par gobgob dans le forum Langage
    Réponses: 2
    Dernier message: 29/09/2008, 00h15
  5. comment savoir si un fichier est un lien symbolique?
    Par trotters213 dans le forum C++
    Réponses: 2
    Dernier message: 02/12/2005, 12h55

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