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

avec Java Discussion :

Chemin sous Windows et Linux


Sujet :

avec Java

  1. #1
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Points : 118
    Points
    118
    Par défaut Chemin sous Windows et Linux
    Je développe mon appli Java sous Windows. J'utilise dans les chemins d'accès au disque le \

    Quand je la lance sous Debian, j'ai des erreurs dans les chemins :

    /home/moi\test\

    Evidemment il mélange les séparateurs Windows et Linux.

    J'imagine que Java sait gérer cela, mais comment ? J'ai l'habitude sous Windows d'utiliser des String pour les chemins, mais visiblement ce n'est pas la bonne option.

    Avez-vous une idée ?

    Christian

  2. #2
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    Essaie de n'utiliser que des "/" ... "/test/", donc.
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  3. #3
    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,

    en Java 7, utilises les classes java.nio.file.Path et java.nio.file.Paths pour ne plus avoir à se préoccuper de ça :

    L'exécution, sous Windows de ce programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class PathTest {
     
    	public static void main(String[] args) {
     
    		System.out.println(Paths.get("/machin/truc.txt").toString());
    		System.out.println(Paths.get("/machin\\truc.txt").toString());
    		System.out.println(Paths.get("\\machin\\truc.txt").toString());
     
    	}
     
    }
    affiche :

    \machin\truc.txt
    \machin\truc.txt
    \machin\truc.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.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ça marchait parfaitement en Java 1.4 en utilisant juste File.

    Sans compter que transformer les / en \ pour Windows est purement cosmétique : les utilisateurs ont l'habitude de voir des \ et il vaut donc mieux leur montrer ça, mais Windows se tamponne complètement que l'on utilise l'un ou l'autre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    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
    Citation Envoyé par thelvin Voir le message
    Ça marchait parfaitement en Java 1.4 en utilisant juste File.
    Oui. Mais je pense qu'il se sert des paths sous forme de String, de manière externe à java (sinon ça fonctionnerait, en effet).

    Citation Envoyé par thelvin Voir le message
    Sans compter que transformer les / en \ pour Windows est purement cosmétique : les utilisateurs ont l'habitude de voir des \ et il vaut donc mieux leur montrer ça, mais Windows se tamponne complètement que l'on utilise l'un ou l'autre.
    Dans des shell scripts, je ne crois pas justement. En ligne de commande, ce n'est pas le cas :
    C:\Documents and Settings\Joël>cd c:/temp
    Le chemin d'accès spécifié est introuvable.
    En tout cas, en ce qui me concerne, j'utilise toujours des slashes (parce que c'est plus lisible que \\ et qu'il n'y a qu'un caractère à taper au lieu de 2 ) quand j'ai besoin de taper un path directement dans mon code (ce qui est extrêmement rare), et j'utilise toujours des File, donc aucun soucis avec des paths avec \ ou / qui proviendrait d'un fichier de config ou autre.
    Quand j'exporte, je fais éventuellement un replace pour remplacer les "mauvais" séparateurs par le séparateur par défaut de l'OS de destination.
    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.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Dans des shell scripts, je ne crois pas justement. En ligne de commande, ce n'est pas le cas :
    C:\Documents and Settings\Joël>cd c:/temp
    Le chemin d'accès spécifié est introuvable.
    Je ne pourrais pas jurer ce qui est fait dans des shell scripts Windows pour assurer la rétrocompatibilité, l'idée même de faire des shell scripts sous Windows autrement qu'avec powershell ou cygwin me semblant à peine plus productif que juste se suicider directement.
    Mais il se trouve que nous ne sommes pas en train de parler shell scripts, qui sous Windows, sont un domaine d'étude à eux tous seuls.

    Par ailleurs, la commande "cd c:/temp" produit exactement les mêmes résultats que "cd c:\temp". Je pense que ton Windows date probablement d'après 2005 et n'a donc jamais eu l'idée saugrenue de créer un répertoire "temp" à la racine d'un volume, que ce soit le principal ou un autre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    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
    Désolé, @thelvin, j'aurais du mettre un test plus complet

    C:\Documents and Settings\Joël>cd c:/temp
    Le chemin d'accès spécifié est introuvable.
    
    C:\Documents and Settings\Joël>cd c:\temp
    
    C:\temp>
    PS : mon pc de salon est sous XP SP3 de 2002
    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.

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Soit. Comme je le disais je ne peux pas jurer de ce que font les shell Windows, en fonction de l'année ou de la phase de la lune.
    Je n'observe ce comportement sur aucun de mes Vista ni Seven, mais je veux bien croire que si je rebootais un vieux XP, je verrais ce que tu dis.

    Les API windows (modernes, et notamment celles utilisées par Java,) et les adresses de fichiers tapés en boîte de dialogue ou barre d'adresse, par contre, s'en fichent complètement.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre éclairé Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Points : 803
    Points
    803
    Par défaut
    De toutes façons sous Java on est censé ignorer de quel OS il s'agit, et le "/" marche dans tous les cas, à part pour appel direct à une commande "console de win", qui est une étrange idée, puisque ça nique la portabilité.
    Sans danger si utilisé conformément au mode d'emploi.

    (anciennement BenWillard, enfin moins anciennement que ... enfin bon c'est une longue histoire... Un genre de voyage dans le temps...)

  10. #10
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par JoeChip Voir le message
    De toutes façons sous Java on est censé ignorer de quel OS il s'agit,
    Oui et non.
    On peut très bien avoir à effectuer des opérations spécifiques sur un système.
    Si on le fait proprement il n'y a aucun problème à cela...

    Le fait de vouloir à tout prix ignorer le système peut être plus problématique qu'autre chose dans ce cas...

    Citation Envoyé par JoeChip Voir le message
    et le "/" marche dans tous les cas, à part pour appel direct à une commande "console de win", qui est une étrange idée, puisque ça nique la portabilité.
    Le "/" marche à tout les coup et peut être utilisé dans le code, surtout que cela évite les doubles anti-slash...
    Par contre si le chemin doit être affiché à l'utilisateur ou "passé" à une autre application, il est préférable d'utiliser le bon format de l'OS.

    Mais on peut utiliser File ou Path pour récupérer un chemin avec la bonne représentation...

    A noter également que l'on peut utiliser File.separator pour générer directement les chemins au bon format.

    Citation Envoyé par thelvin Voir le message
    Les API windows (modernes, et notamment celles utilisées par Java,) et les adresses de fichiers tapés en boîte de dialogue ou barre d'adresse, par contre, s'en fichent complètement.
    En Java pure on peut utiliser le "/", quelque soit l'OS ou la version de Java.
    Sous Windows ca peut être très variable selon les programmes, et il est quand même préférable d'éviter cela...


    a++

  11. #11
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2009
    Messages : 167
    Points : 118
    Points
    118
    Par défaut
    Merci pour toutes ces réponses et clarifications.

    Cela m'aide bien.

    Christian

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

Discussions similaires

  1. TB sous windows et linux
    Par mhamedbj dans le forum Thunderbird
    Réponses: 4
    Dernier message: 15/05/2007, 15h28
  2. Installer un serveur sous Windows ou Linux
    Par dell.inferno dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 13/01/2007, 19h42
  3. Réponses: 9
    Dernier message: 05/11/2006, 00h33
  4. Les interruptions sous Windows et Linux
    Par Descartes dans le forum x86 32-bits / 64-bits
    Réponses: 7
    Dernier message: 07/06/2003, 22h42
  5. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45

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