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 :

Gestion de chemin de fichiers multisysteme


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut Gestion de chemin de fichiers multisysteme
    J'ai besoin de manipuler des noms de fichiers multi-systeme, c'est a dire que l'interface GUI peut me renvoyer soit un fichier linux, soit un fichier windows, decoupé en 2 partie : Nom du repertoire et nom du fichier.

    au final je souhaite avoir un seul nom de fichier, resultat de la concatenation entre le repertoier et le nom de fichier transmis par l'interface GUI.

    A noter : le nom du repertoire doit etre eventuelement complete par un "/" ou un "\" en fonction du systeme sur lequel on execure l'application si il n'a pas ete saisi par l'utilisateur.

    J'ai bien vu la classe File mais je suis un peu perdu avec toutes les methodes proposées : Canonical, abstract, ....

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Si tu dois manipuler des noms de fichiers windows sur une plate-forme linux, ou des noms de fichiers linux sur une plate-forme windows, je ne connais rien qui le fasse. Toutefois si tu es sur un réseau, VFS t'aidera dans ce cas.

    Par contre, s'il s'agit de manipuler les noms de la plate-forme courante sur la plate-forme courante, alors c'est effectivement la classe File qu'il te faut utiliser. Je te conseille de l'approfondir (ou de nous poser des questions plus précises sur cette classe). Tu peux également t'aider de Commons IO, particulièrement de FilenameUtils designed to work the same on both Unix and Windows, comme dit la doc (mais de toutes manières c'est la même chose pour la classe File).

  3. #3
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    ok je vais regarder de plus pres

    En fait ce que je souhaite c'est effectivement manipuler des noms de fichiers sur leur plateforme d'origine. Par contre l'application etant utilisable a la fois sous Linux et Windows je ne sais pas a la compilation le systeme sur lequel on le manipule.

    L'interface GUI fourni par exemple 2 chaines : REpertoire et nom de fichier.
    Il me faut (entre autre) concatener ces 2 chaines pour former le chemin d'acces compelt au fichier. Il me faut "checker" si la personne a saisie ou non le "/" (ou le "\") final avant concatenation. Si non, le rajouter.
    Du coup .... le fait de ne pas savoir sur quelle plateforme on se trouve, est genant.

    J'ai vu que la classe File serait a priori capable de le faire (via un des constructeurs) mais je n'en suis pas sur et j'ai du mal a comprendre la signification des methodes getXXXPath/File qui la plupart du temps retourne la meme valeur

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Moi, ma politique à ce sujet :
    • Considérer que l'utilisateur sait sur quelle plateforme il se trouve, et s'il tape des \ sur linux, c'est son affaire ; j'essaie de traiter les fichiers qu'il me dit de traiter, avec le traitement d'erreur qui va bien c'est tout.
    • Pour se balader dans l'arborescence en code, j'emploie toujours la forme ficher = new File(répertoire, nom).
    • Au départ j'utilise les properties systèmes qui me donnent les répertoires de base, et diverses autres combines.
    • Pour l'utilisateur, avec la GUI, il y a le JFileChooser qui "invite" l'utilisateur à choisir des noms de fichiers corrects.
    • Et pour savoir ce qu'est exactement les getXXXPath/File, un petit System.out.println peut aider
    • Et je ne fais jamais de if (linux) ... else if (windows) ... avec tout ça !

  5. #5
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Ok merci pour ta reponse

    Citation Envoyé par gifffftane Voir le message
    Moi, ma politique à ce sujet :
    Considérer que l'utilisateur sait sur quelle plateforme il se trouve, et s'il tape des \ sur linux, c'est son affaire ; j'essaie de traiter les fichiers qu'il me dit de traiter, avec le traitement d'erreur qui va bien c'est tout.
    Oui moi aussi
    Mais le dernier / ou \ est tres souvent omis ... ou du moins jamais mis .. sauf le jour ou ca te casse le plus les pieds
    J'ai donc pour habitude de tester le dernier caractere et effectuer une concatenation correcte. Mais jusqu'a present je n'ai eu qu'a gerer des applications mono-plateforme.

    Citation Envoyé par gifffftane Voir le message
    Pour se balader dans l'arborescence en code, j'emploie toujours la forme ficher = new File(répertoire, nom).
    C'est ce que j'ai vu. Cette technique semble concatener correctement et en respectant le systeme, un nom de fichier et son repertoire.
    Ca confirme mes recherches

    Citation Envoyé par gifffftane Voir le message
    Au départ j'utilise les properties systèmes qui me donnent les répertoires de base, et diverses autres combines.
    Jusque la on est d'accord

    Citation Envoyé par gifffftane Voir le message
    Pour l'utilisateur, avec la GUI, il y a le JFileChooser qui "invite" l'utilisateur à choisir des noms de fichiers corrects.
    Jusque la OK.
    Mais la config peut etre modifié a la main via un fichier de config textuel ... du coup ca flingue le systeme

    Citation Envoyé par gifffftane Voir le message
    Et pour savoir ce qu'est exactement les getXXXPath/File, un petit System.out.println peut aider
    Fait
    Mais j'ai pas vu de difference notable

    Citation Envoyé par gifffftane Voir le message
    Et je ne fais jamais de if (linux) ... else if (windows) ... avec tout ça !
    C'est mon but

  6. #6
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Quelques remarques/rappels :
    • Si tu dois mettre des chemin "en dur" dans le code il est préférable d'utiliser les / qui fonctionnera sur tous les systèmes. La classe File les remplaçant par des \ sous Windows...
    • getPath() renvoi le chemin utilisé pour créer l'objet File. Si tu veux le chemin réel il faut utiliser la méthode getCanonicalFile(). C'est utile en particulier lorsqu'on utilise des chemin relatif ou des / et qu'on souhaite avoir le vrai nom du fichier (pour le présenter à l'utilisateur par exemple).
    • Le champs File.separator comporte le séparateur utilisé par le système, c'est-à-dire \ sous Windows et / sous les autres systèmes...


    a++

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

Discussions similaires

  1. Gestion des chemins et fichiers hors charset ascii
    Par PatriK-b dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/12/2009, 15h33
  2. [VBA]Gestion des photos : modifier le chemin des fichiers
    Par alainGL dans le forum VBA Access
    Réponses: 4
    Dernier message: 25/04/2007, 15h56
  3. chemin de fichier et gestion d'extension
    Par lietof dans le forum Langage
    Réponses: 2
    Dernier message: 03/05/2006, 15h07
  4. [VBS] Gestion des espaces dans le chemin de fichiers
    Par Edoxituz dans le forum VBScript
    Réponses: 4
    Dernier message: 23/02/2006, 16h41
  5. Gestion des permissions des fichiers sur NTFS
    Par gnu_thomas dans le forum MFC
    Réponses: 3
    Dernier message: 22/01/2004, 08h22

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