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

JSF Java Discussion :

chemin d'un fichier


Sujet :

JSF Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 426
    Par défaut chemin d'un fichier
    bonjour,
    je voudrais effectuer des traitement sur un fichier texte où je stocke un champ de texte d'une h:inputText.
    J'ai testé le traitement sur le fichier par une fonction main où j'écrit dans la fonction traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public String traitement() {
    try {
    BufferedWriter fichier = new BufferedWriter(new FileWriter("WebRoot/files/print.txt",true));
    fichier.newLine();
    fichier.write(message);
     
    fichier.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    return "success";
    }
    }
    L'affichage se fait sur le console. Mais, le problème et dans l'appel de cette méthode à partir de mon fichier.xhtml.
    j'obtiens cette exception :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    java.io.FileNotFoundException: WebRoot\files\print.txt (Le chemin d'accès spécifié est introuvable)
    	at java.io.FileOutputStream.openAppend(Native Method)
    	at java.io.FileOutputStream.<init>(Unknown Source)
    	at java.io.FileOutputStream.<init>(Unknown Source)
    	at java.io.FileWriter.<init>(Unknown Source)
    	at fichiermessages.traitement(fichiermessages.java:15)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
    	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
    	at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
    	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
    	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
    	at javax.faces.component.UICommand.broadcast(UICommand.java:383)
    	at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
    	at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
    	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
    	at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
    	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
    	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
    	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    	at java.lang.Thread.run(Unknown Source)

    Merci de m'indiquer le chemin que je doit ajouter

    Sinon, est ce que manipuler des fichier xml avec l'api JDOM serais plus facile??

  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 : 45
    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 dois préciser le chemin complet depuis la racine du système de fichier. Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BufferedWriter fichier = new BufferedWriter(new FileWriter("/home/tchize_/applications/jakarta-tomcat-6.0/webapps/WebRoot/files/print.txt",true));

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 426
    Par défaut
    ok, j'ai mis ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    BufferedWriter fichier = new BufferedWriter(new FileWriter("C:/Documents and Settings/Administrateur/Bureau/apache-tomcat-6.0.18/webapps/site/files/print.txt",true));
    L'exception n'apparait plus, mais si par exemple j'héberge mon site, est ce que je doit saisir de nouveau l'adresse du fichier ?
    y-a t-il une méthode qui retourne un lien vers le WebRoot de mon application?

    Merci

  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 : 45
    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
    Citation Envoyé par jaljal Voir le message
    mais si par exemple j'héberge mon site, est ce que je doit saisir de nouveau l'adresse du fichier ?
    Oui, d'ou l'intéret de mettre ca dans une fichier de configuration quelconque.
    y-a t-il une méthode qui retourne un lien vers le WebRoot de mon application?
    Aucune méthode fiable, rien dans les specification webapp ne permet d'obtenir ce chemin, pour deux raisons principale:

    1) On peux toujours lire dans le répertoire de la webapp via getResource() du classloader
    2) Le contenu de la webapp n'est pas supposé changer autrement que par des mises à jour de la webapp. D'alleurs, la pluspart des conteneur effacent tout le répetoire de la webapp lors des mises à jour.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 426
    Par défaut
    merci pour la réponse

    Après la lecture d'une discussion sur ce forum, j'ai utilisé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    FacesContext context = FacesContext.getCurrentInstance();
    	ServletContext servletContext = (ServletContext)context.getExternalContext().getContext();
     
    	String webRoot = servletContext.getRealPath("/");
     
    BufferedWriter fichier = new BufferedWriter(new FileWriter(webRoot + "files/print.txt",true));

  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 : 45
    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
    autant le savoir, sur certains conteneurs, getRealPath peut renvoyer null.

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

Discussions similaires

  1. [Configuration] chemin d'un fichier dans un include/require
    Par BizuR dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 22
    Dernier message: 31/01/2006, 01h25
  2. Tester le formalisme du chemin vers un fichier ?
    Par elitost dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 07/10/2005, 15h06
  3. [C#] Chemin pour mon fichier CSS
    Par the_new dans le forum ASP.NET
    Réponses: 5
    Dernier message: 23/03/2005, 15h25
  4. [Plugin] Récuperation du chemin d'un fichier!
    Par GRM dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 21/03/2005, 09h39
  5. Fonction permettant d'afficher le chemin d'un fichier
    Par kilinette dans le forum Langage
    Réponses: 4
    Dernier message: 22/06/2004, 10h52

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