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 :

Ouvrir un fichier relatif à un dossier


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 24
    Points : 19
    Points
    19
    Par défaut Ouvrir un fichier relatif à un dossier
    Bonsoir tout le monde !

    Je suis en train de réaliser une application de gestion pour mon stage.

    Tout ce passe bien, néanmoins j'ai un petit problème pour ouvrir un fichier depuis mon projet avec new file("Path").

    En fait j'aimerais créer un dossier final de cette façon :

    /nom_projet
    -----> application.jar
    -----> /Ressources
    ---------> data1.txt
    ---------> data2.txt
    ---------> ect....

    Du coup il faut que les classes contenues dans application.jar puissent ouvrir les fichiers dataX.txt.

    Ca marche si je met le chemin en entier, c'est à dire "C:/documents/... .../nom_projet/Ressources/data1.txt". Mais si j'utilise un truc du style "./Ressources/data1.txt" (c'est à dire en partant de la source de mon dossier avec "."), là mon fichier n'est jamais trouvé :/

    J'ai essayer de mettre plein de ".." à tous les endroits mais ca ne marche pas non plus

    Du coup quelqu'un a une solution pour accéder aux fichiers de mon dossier Ressources sans utiliser le chemin en entier? Peut être que c'est parce que PATH de mon projet n'est pas là où je le crois (pour moi le "." = "C:/documents/... .../nom_projet", mais je me trompe peut être ).

    Merci d’avance

    PS: Ya un fichier qui contient des login et mot de passe, du coup ya pas moyen de le cacher un minimum (en le mettant dans le jar par exemple, ou en mettant un mot de passe au fichier). Mais je sais pas si c'est très propre de faire ça

    PS 2: Le Java de l'entreprise est en 1.6, du coup je travaille moi aussi en 1.6

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    il faut que tu te place dans le dossier du jar avant de l'exécuter:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd c:\chemin\vers\ton\application
    java -jar tonAppli.jar
    en général on met ça dans un script shell

    le "." c'est le dossier courant, ce qui peut être tout et n'importe quoi suivant comment le jar est lancé.

  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
    Citation Envoyé par Metha_Chemista Voir le message
    PS: Ya un fichier qui contient des login et mot de passe, du coup ya pas moyen de le cacher un minimum (en le mettant dans le jar par exemple
    Si, tu le mets au même endroit que tes .java, dans les sources si tu utilises un IDE (au même endroit que les .class correspondant dans la version compilée, et donc inclus dans le jar si tu en fais un jar). En revanche, tu n'y accèdes plus par File, mais en tant que ressource justement, par la méthode getResource(name) (par URL) ou getResourceAsStream(name) (par InputStream) de la classe Class, ou ClassLoader. Mais c'est vraiment une très faible protection, puisqu'il suffit de regarder dans le jar au final pour lire le fichier (au moins ça évite d'avoir plusieurs fichiers). Ensuite, tu peux éventuellement crypter le mot de passe, ce qui rendra un peu plus difficile son accès, sachant, qu'il suffira de décompiler le code pour retrouver rapidement le mot de passe. La meilleure technique reste de ne pas inclure de mot de passe dans un fichier accessible au public.
    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
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    tchize :

    Ok merci je vais tester
    Par contre les gens qui utiliseront l'application n'utiliseront pas la commande "java" mais appuieront simplement sur l’icône du fichier jar :/
    Donc la source ne sera pas forcement fixé, il n'y a pas moyen de forcer la source à l'endroit où est l'application ?

    joel.drigo :

    Oui c'est vrai le fichier de login sera théoriquement accessible par tous
    Mais on m'a dit que la sécurité n'était vraiment pas importante (l'application ne sera dispo que en local par les ouvriers et les admins, ils n'auraient donc aucun intérêt à "pirater" leur propres applications ^^).
    Du coup merci je vais essayer

  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 Metha_Chemista Voir le message
    Par contre les gens qui utiliseront l'application n'utiliseront pas la commande "java" mais appuieront simplement sur l’icône du fichier jar :/
    Donc la source ne sera pas forcement fixé, il n'y a pas moyen de forcer la source à l'endroit où est l'application ?
    Dans ce cas le dossier d'exécution est le dossier dans lequel se trouve le jar. Il suffit de référencer le fichier par son chemin relatif à ce dossier (donc new File("fichier.truc"); et new File("dossier/autre.machin") pour une arborescence comme ça :

    • bidule.jar
    • fichier.truc
    • dossier
      • autre.machin
    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
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    C'est bon l'application arrive à trouver les fichiers avec "Ressources/data" ^^

    Merci beaucoup

  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
    Salut,


    Sinon on peut généralement récupérer l'emplacement du jar avec l'API de reflection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     // ou "Main" est une classe du jar :
    Main.class.getProtectionDomain().getCodeSource().getLocation()

    Citation Envoyé par Metha_Chemista Voir le message
    Oui c'est vrai le fichier de login sera théoriquement accessible par tous
    Mais on m'a dit que la sécurité n'était vraiment pas importante (l'application ne sera dispo que en local par les ouvriers et les admins, ils n'auraient donc aucun intérêt à "pirater" leur propres applications ^^).
    Dans ce cas pourquoi une sécurité ?
    "On met un cadenas, mais on laisse la clef dessus c'est plus simple..."


    C'est quoi comme application ?
    Il n'y a vraiment pas moyen de déplacer l'authentification sur un serveur ??


    a++

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Dans ce cas le dossier d'exécution est le dossier dans lequel se trouve le jar.
    Non, ce n'est pas nécessairement le cas, d'où l'intérêt de créer un script shell. Voilà ce que j'obtiens ici quand je double clique sur un jar
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Current folder : /home/tchize/.
    Jar location : file:/tmp/my.jar
    Une alternative pour retrouver à se trouve le .jar qui contient une classe déterminée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaClasse.class.getProtectionDomain().getCodeSource().getLocation());
    mais je ne suis personellement pas fan de ce genre de méthode car ça deviens vite le bordel quand on a beaucoup de librairies

  9. #9
    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 tchize_ Voir le message
    Non, ce n'est pas nécessairement le cas, d'où l'intérêt de créer un script shell. Voilà ce que j'obtiens ici quand je double clique sur un jar
    Je ne savais pas que sur linux ce n'était pas le cas. Sur Windows, à priori, ça l'est toujours, ou non (en tout cas, je n'ai jamais vu que ça ne fonctionnait pas sous Windows) ? Sinon, l'alternative au shell sur Windows serait le racourci, et d'utiliser la propriété "Démarrer dans".
    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.

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Sous windows, comme sous linux, ça dépend de comment l'association de fichier a été créée. Le dossier de travail fait partie de la configuration de l'association. Et sous linux, en général, toutes les association font pointer le dossier courant dans la home ou Mes documents. Dans tous les cas ce n'est pas sous le contrôle de la jvm et ça ne fait l'objet d'aucune standardisation. Si ça marche dans 99% des cas, ça te fait quand même 1% de users qui se retrouvent avec une application inutilisable.

Discussions similaires

  1. [XL-2003] Rechercher et ouvrir un fichier dans un dossier sous condition
    Par volubiliss dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 20/09/2011, 15h41
  2. Réponses: 2
    Dernier message: 03/06/2008, 21h56
  3. Ouvrir tous les xls-fichiers d'un dossier
    Par A@Lah dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/10/2007, 16h12
  4. Ouvrir plusieurs fichier textes dans un dossier : *texte.txt
    Par Jenn74 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/05/2007, 16h52
  5. Réponses: 2
    Dernier message: 24/05/2006, 19h29

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