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

Entrée/Sortie Java Discussion :

Problème chemin de fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Par défaut Problème chemin de fichier
    Bonjour à tous,


    Tout est dans le titre, mais je vais vous apporter quelques explications.

    Je travaille sous NetBeans et voici mon architecture au niveau des dossiers/fichiers:

    monDossierProjet:
    |_build
    |_dist
    |_proj.jar
    |_lib
    |_conf
    |_config.txt
    |_src
    |_test

    Lors du développement de mon applet, je lis les configurations nécessaire à l'initialisation dans "conf/config.txt".

    Par contre, lorsque je charge mon .Jar dans mon serveur, je n'arrive plus a accéder au fichier.

    voici l'architecture sur le serveur:
    applet:
    \_conf
    \_config.txt
    \_dist
    \_conf
    \_config.txt
    \_lib
    \_monProjet.jar

    donc voici ce que j'ai mis au départ pour mon accès au fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    File fichier = new File("conf/config.txt");
          byte[] result = new byte[(int) fichier.length()];
          FileInputStream in = new FileInputStream(filename);
    L'archi du .JAR est:
    monProjet.jar
    \_META_INF
    \_monProjet
    \_mes fichiers.class

    Donc lorsque j'ai mis mon applet dans le serveur, j'ai modifié à:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    File fichier = new File("../conf/config.txt");//pour le conf au meme niveau que le jar
          byte[] result = new byte[(int) fichier.length()];
          FileInputStream in = new FileInputStream(filename);

    puis pour atteindre l'autre "conf/config.txt" qui est au niveau supérieur j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    File fichier = new File("../../conf/config.txt");//pour le conf au meme niveau que le jar
          byte[] result = new byte[(int) fichier.length()];
          FileInputStream in = new FileInputStream(filename);
    Donc voila le souci.

    J'ai bien lu tous ce qu'il existait dans le forum, mais je n'arrive pas à corriger le problème.

    Si vous avez une autre solution, ou une idée pour me diriger vers la bonne, je suis preneur.

    J'ai pensé à une chose, est ce qu'on peut créer un lien URL pour instancier un nouveau "FILE"?

    Car dans ce cas, ca pourrait corriger et rendre portable mon souci.


    Cordialement,

    MustOne

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Tu ne peux pas utiliser File pour accéder à ce qui se trouve sur le serveur. Pour y accéder, utilise des URL. LE "codebase" ou le "documentBase" de l'applet te servira de point de départ pour localiser ce fichier.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Par défaut
    bonjour,

    Je m'en doutais bien que le problème venait de la.

    Par contre, utiliser le "codeBase" ou "documentBase" permet donc de créer les URL avec comme point de repere le document qui appelle la lecture.

    En supposant que l'URL ne change jamais -car j'ai l'adresse dynDNS du serveur- est ce que je peux utiliser ca?

    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
    public class URLReader {
        public static void main(String[] args) throws Exception {
    	URL yahoo = new URL("http://www.yahoo.com/");
    	BufferedReader in = new BufferedReader(
    				new InputStreamReader(
    				yahoo.openStream()));
     
    	String inputLine;
     
    	while ((inputLine = in.readLine()) != null)
    	    System.out.println(inputLine);
     
    	in.close();
        }
    }

    Je ne met pas en doute ta méthode, mais c'est juste parce que j'avais continué mes recherches et donc j'aimerai avoir un avis supplémentaire

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    le bufferedreader n'est pas garanti de fonctionner à tous les coup. Ca dépend de l'encodage utilisé pour la page. Si la page HTML a un encodage différent de celui de ta plateforme, ca peux déclencher des exceptions dues à l'impossibiltié de décoder. Préfère le xconstructeur de BufferedReader prenant en paramètre un charset, ainsi si tu a le controle sur le codage coté client. (Reste plus qu'à ce qu'il soit le même que la page coté serveur)

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Par défaut
    ok c'est bien à savoir.

    Cependant, je ne me suis pas bien exprimé.

    supposes que dans l'exemple que j'ai "copier/coller" je ne mette pas une URL de yahoo, mais bien l'URL du fichier conf/config.txt que je souhaite ouvrir, du genre:

    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
    public class URLReader {
        public static void main(String[] args) throws Exception {
    	URL yahoo = new URL("http://monDynDNS/conf/config.txt");
    	BufferedReader in = new BufferedReader(
    				new InputStreamReader(
    				yahoo.openStream()));
     
    	String inputLine;
     
    	while ((inputLine = in.readLine()) != null)
    	    System.out.println(inputLine);
     
    	in.close();
        }
    }

    est ce susceptible de fonctionner? ou le probleme d'encodage/décodage reste le meme?

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    précise toujours l'encodage dans ton bufferedReader, sinon tu va être dépendant de la plateforme qui exécute l'applet. Ainsi, si le fichier est en iso8859-1 et que la plateforme où s'exécute l'applet utilise par défaut de l'UTF-8, tu va te retrouver à essayer de lire en utf-8 un fichier au format iso8859-1 , ce qui aboutira à des erreurs.

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Par défaut
    ok, message reçu.

    Donc cela me fait 2 solutions avec les "codeBase/documentBase" et les URL.

    Bon ben je vais essayer. Merci de l'information.

  8. #8
    Membre confirmé
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Par défaut
    lol je suis mauvais, car mon post précédent ne signifie rien... lol

    Bon, voici ce que j'ai modifié dans le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     URL url = new URL(getCodeBase(), "conf/config.txt");
                            InputStream IS = url.openStream();
                            InputStreamReader ISR = new InputStreamReader(IS);
                            BufferedReader buff = new BufferedReader(ISR);
    Dans ma console, j'ai une erreur qui dit:
    Erreur --java.net.UnknownHostException: mondynDNS/monPath/

    Pourquoi ne reconnait-il pas mon adresse dynDNS?
    Pourtant, le path retourné est bon ...


    edit: je viens de voir que je me suis trompé dans le petit schéma de mon architecture serveur.... le .JAR est dans le dossier "dist" avec les dossiers "lib" et "conf"

  9. #9
    Membre confirmé
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Par défaut Nouvelles
    Bonjour,


    Voila, j'arrive à lire mon fichier de configuration avec ce code:

    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
     
      try {
                        URL url = general.getUrlConfig();
                        URLConnection urlCon = url.openConnection();
                        InputStream IS = urlCon.getInputStream();
                        InputStreamReader ISR = new InputStreamReader(IS);
                        BufferedReader buff = new BufferedReader(ISR);
     
                        try {
                            String line;
                            while ((line = buff.readLine()) != null) {
                                maVariable = line;
                            }
                        } finally {
                            buff.close();
                        }
                    } catch (IOException ioe) {
                        System.out.println("Erreur --" + ioe.toString());
                    }
    Avec general.getUrlConfig() qui me donne l'url du fichier.

    Ensuite, après une modification du code, je souhaite écrire une ligne et enregistrer le fichier.

    Voici comment je m'y prend:

    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
     
    try {
                            URL url = general.getUrlConfig();
                            URLConnection urlCon = url.openConnection();
                            urlCon.setDoOutput(true);
     
                            OutputStream OS = urlCon.getOutputStream();
                            OutputStreamWriter OSW = new OutputStreamWriter(OS);
                            String s = String.valueOf(uneVariable);
                                                    OSW.write(s);
                            OSW.close();
                        } catch (FileNotFoundException fnfe) {
                            fnfe.printStackTrace();
                        } catch (IOException IOE) {
                            IOE.printStackTrace();
                        }

    Je n'ai aucun message d'erreur et pourtant, lorsque je regarde dans mon fichier si la modification a été prise en compte, ben j'ai toujours le meme contenu.

    Une petite idée du problème?

    MustOne

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    on ne peux pas écrire dans un fichier qui se trouve sur un serveur!

  11. #11
    Membre confirmé
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Par défaut
    ah oui c'est vrai, j'avais complètement oublié!

    ben mince...


    Existe t'il une alternative?

    Enfin je demande, mais je vais d'abord fouiner un peu partout



    MustOne

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    une page web style php ou servlelt sur laquelle tu soumet un formulaire d'upload via ton applet

  13. #13
    Membre confirmé
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Par défaut
    ah merci hihi


    donc pour les pages PHP, je crois que c'est mort, car mon serveur est figé, dans le sens ou je ne peux pas ajouter de "plug-in" ni d'un programmme genre "apache".

    Edit: je viens de regarder la configuration du serveur. il n'y a qu'un serveur HTTP


    Ensuite, crois tu qu'en moins de 3 heures (avec un niveau débutant), je saurai manipuler les servlet? car en fait le client est arrivé, et je dois tout rendre tout à l'heure lol

    Enfin, je suis entrain de lire un cours sur developpez.com . on verra ce que ca donne hihi


    en tout cas, merci pour la piste.


    ps: j'avais pensé à une solution. J'ai vu qu'on pouvais créer des fichiers temporaires. Donc je me suis dis: "et si je j'enregistrais mes modifications dans un fichier temporaire, puis je le copie colle sur le serveur. Puis finalement, je me suis dis, que ca revenait à écrire sur le serveur donc.... c'est mort lol


    ps2: au juste, je pensais qu'en signant l'applet (meme avec une signature personnelle) ben qu'on pouvait écrire sur le serveur... le serveur ou poste client? mince je ne m'en souviens plus. il faut vraiment que je relise tous les cours lol

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    les servlet c'est comme php, ca tourne sur le serveur. Si t'as rien sur le serveur pour gérer l'upload de fichier, ton applet saura pas y stocker un fichier!

  15. #15
    Membre confirmé
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Par défaut
    Donc je suis condamné sur ce point la.

    les capacités du serveur sont limitées. pff.

    Du coup ca tombe à l'eau la solution.

    Donc je ne peux que lire mon fichier depuis mon serveur et toute écriture ou tout écrasement de mon fichier par un autre n'iront pas non plus.


    bon ben... tant pis. Il faut que je trouve une solution d'urgence.


    Merci pour ton aide.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    en meme temps d'un point de vue desgin c'est assez curieux

  17. #17
    Membre confirmé
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Par défaut un semblant d'espoir :p
    =)

    Dis, est ce que tu penses que faire la même chose avec un transfert FTP? ou est ce que ça reviendra au même? (mon coupleur automate fait aussi serveur FTP).

    Puis, tu veux dire quoi "en meme temps d'un point de vue desgin c'est assez curieux "

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    je trouve curieux de créer une applet qui nécessite des droit d'accès en écrire pour écraser un fichier a priori de config sur un serveur. Normalement, au pire, tu garde la config en local (faudra que l'applet soit signée pour avoir au filesystem).

    Pour le ftp, si t'as accès en écriture à un ftp, tu peux l'utiliser pour envoyer des fichier mais, attention, ca veux dire que les gens qui vont exécuter ton applet, auront le mot de passe du serveur ftp! (Ben oui, si l'applet l'a, celui qui l'utilise l'aura de fait)

  19. #19
    Membre confirmé
    Homme Profil pro
    Ingénieur de projets
    Inscrit en
    Mai 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur de projets
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 103
    Par défaut
    J'avoue que ton argument est bon

    Ben je t'apporte quelques explications supplémentaires.

    En fait l'applet que nous avons développé est destinée à un utilisateur (sans compter notre équipe qui est chargée du projet - dont moi qui développe l'applet).


    En gros, nous voulons sécuriser les données que contient l'applet par un mot de passe.

    Comme je suis débutant en JAVA, la première solution que j'ai eu en tête, c'était de sauvegarder les paramètres d'accès dans un fichier texte et de crypter le fichier -avec crypto et une clef.

    Ensuite, pour les paramètres de connexion FTP, ils seront codés en dur. à moins de les mettre directement dans l'automate pour augmenter la sécurité.


    Maintenant, si nous trouvons que cette solution n'est pas suffisamment sécurisée, nous allons tout mettre dans l'automate ce qui allonge considérablement les temps de chargement de l'applet et deja que via le web, tout n'est pas forcément à vitesse grand V, ben voila...ca ne le fera pas trop trop

    Voila, tu sais tout (enfin toi et les visiteurs du site lol)

  20. #20
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Par défaut

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

Discussions similaires

  1. Problème aléatoire de chemin de fichier
    Par wallys dans le forum C++
    Réponses: 2
    Dernier message: 16/09/2007, 15h02
  2. Problème de chemin de fichier avec des espaces
    Par Akronyme dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 11/12/2006, 17h12
  3. Problème de chemin de fichier complexe
    Par Gianluca dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/08/2006, 11h06
  4. [CKEditor] problème de chemin de fichier avec fck editor
    Par Benjiijneb dans le forum Bibliothèques & Frameworks
    Réponses: 7
    Dernier message: 31/01/2006, 09h05
  5. [MFC]Problème de chemin de fichier
    Par benahpets dans le forum MFC
    Réponses: 3
    Dernier message: 06/09/2005, 13h07

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