Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer le chemin d'un fichier

    24 août 2015 à 17:45:09

    Bonjour,

    je travaille avec une classe qui génère un fichier xml et la dedans s'enregistre plusieurs informations parmi eux le chemin du fichier, mais ma problématique est que dans l'enregistrement du chemin de fichier il s'enregistre que le nom du fichier non pas le chemin complet du fichier .. Pourriez-vous m'aider !!

    • Partager sur Facebook
    • Partager sur Twitter
      24 août 2015 à 17:57:38

      Bonjour.

      Quelle classe utilises-tu pour manipuler le chemin du fichier ?

      Aurais-tu un exemple simple en moins de 20 lignes ?

      • Partager sur Facebook
      • Partager sur Twitter
      Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
        24 août 2015 à 18:06:26

        J'utilise une servlet :

        String url = "";
        url = request.getParameter("file");
        • Partager sur Facebook
        • Partager sur Twitter
          25 août 2015 à 10:23:40

          génère un fichier xml
          Comment le génères-tu ?

          le chemin du fichier
          De quel fichier ? Comment le manipules-tu (String, File, Path, ...) ?

          l'enregistrement du chemin de fichier
          De quel fichier ? XML ou celui dont tu veux écrire le chemin ?

          le nom du fichier non pas le chemin complet du fichier
          De quel fichier ? XML ou celui dont tu veux écrire le chemin ?

          • Partager sur Facebook
          • Partager sur Twitter
          Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
            25 août 2015 à 10:25:15

            Si tu as le nom du fichier et l'emplacement relatif, tu as juste à faire : new File("tonfichier").getAbsolutePath().
            • Partager sur Facebook
            • Partager sur Twitter
              25 août 2015 à 12:06:40

              La classe qui génère fichier xml :

              public class Generate {
              	
              	public   static String generateFile(String filetext, String timetext, String messagetext, 
              					String[] app){
               
              	  try {
               
              		DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
              		DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
               
              		Document doc = docBuilder.newDocument();
              		Element rootElement = doc.createElement("parametre");
              		doc.appendChild(rootElement);
               
              		Element file = doc.createElement("file");
              		file.appendChild(doc.createTextNode(filetext));
              		rootElement.appendChild(file);
               
              		Element time = doc.createElement("time");
              		time.appendChild(doc.createTextNode(timetext));
              		rootElement.appendChild(time);
               
              		Element message = doc.createElement("message");
              		message.appendChild(doc.createTextNode(messagetext));
              		rootElement.appendChild(message);
              		
              		Element applications = doc.createElement("applications");
              		rootElement.appendChild(applications);
              		String  name="application";
              		for(int i=0; i<app.length; i++)
              		{				
              		Element application = doc.createElement(name);
              		application.appendChild(doc.createTextNode(app[i]));
              		applications.appendChild(application);
              		}		
               
              		TransformerFactory transformerFactory = TransformerFactory.newInstance();
              		Transformer transformer = transformerFactory.newTransformer();
              		DOMSource source = new DOMSource(doc);
              		StreamResult result = new StreamResult(new File("C:\\Users\\bisemilah\\Desktop\\admin11.xml"));
               
              		transformer.transform(source, result);
               
              	  } 
              	  catch (ParserConfigurationException pce) {
              		pce.printStackTrace();
              	  } 
              	  catch (TransformerException tfe) {
              		tfe.printStackTrace();
              	  }
              	return "";
              	}
              }

              La partie servlet :

              public class Controller extends HttpServlet {
              	private static final long serialVersionUID = 1L;
              
              	public Controller() {
              		super();
              	}
              
              	protected void doPost(HttpServletRequest request,
              			HttpServletResponse response) throws ServletException, IOException {
              
              		String url = "";
                 
              		url = request.getParameter("file");
              
              		String time = "";
              
              		time = request.getParameter("timeline");
              
              		String msg = "";
              
              		msg = request.getParameter("message");		
              		
              		String [] appli=request.getParameterValues("application");
              					
              		if(appli != null)
              		{
              			Generate.generateFile(url, time, msg, appli);		
              			request.getRequestDispatcher("/view.jsp").forward(request, response);
              		}
              		else
              		{
              			request.setAttribute("erreur", "You have to choose at least one application");
              			request.getRequestDispatcher("/admin.jsp").forward(request, response);
              		}
              	}
              
              }

              La classe qui récupère les données et l'enregistre dans le fichier xml générer :

              public class XpathXml {
              
              	public Bean filexmlToBean() throws Exception {
              		Bean b = new Bean();
              
              		DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
              		DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
              		Document doc = dBuilder.parse(new File(
              				"C:\\Users\\bisemilah\\Desktop\\admin11.xml"));
              
              		doc.getDocumentElement().normalize();
              
              		NodeList nList = doc.getElementsByTagName("parametre");
              
              		NodeList nList1 = doc.getElementsByTagName("application");
              		List<String> apps = new ArrayList<String>();
              
              		for (int temp = 0; temp < nList.getLength(); temp++) {
              
              			Node nNode = nList.item(temp);
              
              			if (nNode.getNodeType() == Node.ELEMENT_NODE) {
              
              				Element eElement = (Element) nNode;
              				
              				for (int i = 0; i < nList1.getLength(); i++)
              				{
              					Node node1 = nList1.item(i);
              					apps.add(node1.getTextContent());
              				}
              				
              				b.setFile(eElement.getElementsByTagName("file").item(0).getTextContent());
              				b.setTime(Integer.parseInt(eElement.getElementsByTagName("time").item(0).getTextContent()));
              				b.setMesg(eElement.getElementsByTagName("message").item(0).getTextContent());
              
              			}
              			b.setAppli(apps);
              		}
              		return b;
              	}
              }
              

              Voilà exemple de mon fichier XML :

              <?xml version="1.0" encoding="UTF-8" standalone="no"?><parametre>
              <file>catalina.out</file>
              <time>1698</time>
              <message>WARN</message>
              <applications>
              <application>hr-portlets</application>
              </applications>
              </parametre>

              Alors ce que je souhaiterais faire est : j'aimerais qu'il se rajoute le chemin complet du fichier dans la balise <file></file> par exemple <file>C:\\Users\\bisemilah\\Desktop\\catalina.out</file> au lieu de <file>catalina.out</file>

              • Partager sur Facebook
              • Partager sur Twitter
                26 août 2015 à 14:00:48

                Bonjour les amis,

                j'ai essayé la méthode getAbsolutePath(); mais il récupère le chemin d'Eclipse non pas celui de fichier !!!

                String url = "";
                url = request.getParameter("file");
                File ffff = new File(url);
                url = ffff.getAbsolutePath();
                • Partager sur Facebook
                • Partager sur Twitter
                  26 août 2015 à 14:05:05

                  A partir d'un chemin relatif seul tu ne peux pas obtenir le chemin absolu.

                  Ton problème vient du fait que ton paramètre ne contient que le chemin relatif.
                  Il faut modifier ta page source pour qu'elle retourne le chemin absolu et non relatif. 

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                    26 août 2015 à 14:08:14

                    Merci @Pinguet62 pour ta réponse mais comment je pourrai modifier ma page source ?!
                    • Partager sur Facebook
                    • Partager sur Twitter
                      31 août 2015 à 13:18:06

                      Klose20005 a écrit:

                      comment je pourrai modifier ma page source ?!

                      Et bien je ne sais pas, comment la génères-tu ?

                      PS : si tu connais le répertoire de ton fichier, tu peux donc concaténer les 2 chemins :

                      String folder = "C:/folder/";
                      String filename = request.getParameter("file");
                      File file = new File(folder, filename);


                      • Partager sur Facebook
                      • Partager sur Twitter
                      Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                        31 août 2015 à 13:32:05

                        Concernant le fichier, c'est à l'utilisateur de choisir son fichier et donc je pourrai pas savoir l'emplacement du fichier c'est pour ça que je 'aimerais savoir le chemin complet .. j'ai pas bien compris ta question : comment la génères-tu ? veut dire quelle page source ?!!
                        • Partager sur Facebook
                        • Partager sur Twitter
                          31 août 2015 à 13:36:56

                          Bonjour, l'utilisateur choisit son fichier comment? Dans une liste, un JFileChooser?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            31 août 2015 à 13:42:30

                            Tu ne peux pas connaitre le chemin du fichier sur le disque de l'utilisateur.
                            Et côté serveur, le chemin sur le disque de l'utilisateur ne sert à rien pour ton application.
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                              31 août 2015 à 14:31:08

                              @Lightel juste dans un string, j'enregistre le nom du fichier dans un fichier XML et après je le récupère pour faire le traitement que je veux .. @Pinguet62 et donc que je dois faire pour savoir un fichier x sélectionnait par l'utilisateur vu que j'enregistre que le nom du fichier et donc il me reste l'emplacement complet de ce fichier x !!!
                              • Partager sur Facebook
                              • Partager sur Twitter
                                31 août 2015 à 15:22:09

                                Tu ne peux simplement pas récupérer le chemin absolut chargé par le client.
                                Si tu veux plus de non-détails sur Google : "jsp upload file absolute path"

                                Si tu as besoin du chemin absolu alors tu as un problème de conception dans ton programme, ou tu veux des informations inutile/impossible.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)

                                Récupérer le chemin d'un fichier

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown