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

Langage Java Discussion :

Chemin relatif vers un fichier (Linux)


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 83
    Points : 95
    Points
    95
    Par défaut Chemin relatif vers un fichier (Linux)
    Bonjour

    J'ai actuellement un problème que je n'arrive pas à solutionner malgré plein d'essais divers et de recherches.

    Mon programme Java fait appel à un fichier de manière relative avec cette instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LecteurBufferise = new BufferedReader(new FileReader("monfichier.dat"));
    J'utilise Eclipse. Lorsque je génère le programme et que je le teste avec l'IDE, le programme parvient à ouvrir mon fichier et à le lire. Par contre, dès que je génère le .jar (auto executable), le programme se lance bien, mais il ne trouve pas le fichier qui pourtant se trouve dans le même répertoire que le .jar.

    J'ai essayé sur Windows avec le même .jar et le fichier dans le même répertoire et il parvient à l'ouvrir sans aucun problème.

    J'ai alors essayé de créer un fichier test de manière relative pour voir ou le programme allait chercher les fichiers relatifs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    File temp = new File("test.dat");
           temp.createNewFile()
    ;

    Et là je suis tombé sur un os... Quand je créé un fichier relatif (qui devrait donc se trouver dans le même répertoire que le .jar) et bien ce dernier le créé dans mon répertoire perso ( /home/perso/ ). Alors que quand je l'éxécute avec l'IDE, il créé bien le fichier dans le répertoire du projet...

    Je suis déséspéré ! Quelqu'un a t-il déjà rencontré ce problème et aurait une solution ?

    Merci d'avance

  2. #2
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    quand tu l execute tu peux savoir le chemin
    en faisant :
    (new File("monfichier.dat")).getPath()

  3. #3
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Peut etre la methode c est getAbsolutePath()

    jette un coup d oeil dans l'api

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 83
    Points : 95
    Points
    95
    Par défaut
    En fait le truc c'est que sur Windows et executé avec l'IDE sur Linux, quand je créé le fichier avec New File("monfichier.truc) ca me le met bien dans le répertoire ou se trouve les fichiers (ou le .jar)

    Alors que le .jar exécuté sur Linux me créé le fichier dans /home/perso/

    Par exemple si je met monfichier.dat dans le /home/perso/ il trouve le fichier et ne fait pas d'erreur. Mais ce n'est pas ça que je veux. Je souhaite que le programme récupère le fichier monfichier.dat se trouvant dans le répertoire ou se trouve .jar

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


    Les chemins relatifs dépendent du répertoire de travail courant, et non pas du répertoire de l'archive jar.

    Comment tu exécutes ce jar ?

    a++

  6. #6
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 83
    Points : 95
    Points
    95
    Par défaut
    Je l'executais avec

    J'ai cherché un peu plus profond dans le forum et j'y ait lu que de stocker les fichiers dans le même répertoire que le .jar n'était pas forcément la meilleure de solutions.

    Alors pour le moment j'ai opté pour le choix manuel pour l'utilisateur d'un répertoire pour contenir les fichiers. Le chemin de ce répertoire étant conservé avec un Preferences de java.util.prefs

  7. #7
    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
    Citation Envoyé par Wharenn
    Je l'executais avec

    Depuis quel répertoire ? Normalement le répertoire de travail doit correspondre au répertoire dans lequel tu te trouves lorsque tu exécutes la commande.

    Citation Envoyé par Wharenn
    J'ai cherché un peu plus profond dans le forum et j'y ait lu que de stocker les fichiers dans le même répertoire que le .jar n'était pas forcément la meilleure de solutions.
    En général on utilise plutôt un fichier caché dans le "user.home", car le répertoire du jar n'est pas forcément accessible en lecture/écriture...



    Toutefois il reste possible de déterminer le répertoire qui contient le jar. J'avais un code de ce genre mais je ne l'ai pas sous la main... je le posterai si je le retrouve.

    a++

  8. #8
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 83
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par adiGuba
    En général on utilise plutôt un fichier caché dans le "user.home", car le répertoire du jar n'est pas forcément accessible en lecture/écriture...
    Voila c'est ce que j'avais lu

    Dans mon application je demande à l'utilisateur ou il souhaite mettre les fichiers car je souhaite que l'application soit portable sur Windows également

  9. #9
    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
    Citation Envoyé par Wharenn
    Dans mon application je demande à l'utilisateur ou il souhaite mettre les fichiers car je souhaite que l'application soit portable sur Windows également
    La propriété "user.home" est portable : sous Windows elle te renverra "C:\Documents and Settings\<username>\".

    a++

    [edit] En plus cela permet le multi-utilisateur (chaque utilisateur possède sont propre fichier de conf).

Discussions similaires

  1. Chemin relatif vers un fichier
    Par buxbux dans le forum Général Java
    Réponses: 19
    Dernier message: 09/11/2009, 15h36
  2. Chemins relatifs (vers image ou css)
    Par hair_peace dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/07/2007, 16h34
  3. creer un chemin relatif vers un fichier xls
    Par Z3c33 dans le forum VBA Access
    Réponses: 1
    Dernier message: 31/05/2007, 19h26
  4. chemin relatif d'un fichier
    Par Endy dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 02/02/2007, 18h30
  5. ODBC - Tables liées et chemin relatif vers le .dsn
    Par Tententai dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2005, 14h53

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