le endsWith je l utilise pour touver le fichier qui a par exemple la fin .tif.
Comment on fait pour changer juste la fin du nom d un fichier ?????
par exemple f.tif en f.xml ?????
merci
Version imprimable
le endsWith je l utilise pour touver le fichier qui a par exemple la fin .tif.
Comment on fait pour changer juste la fin du nom d un fichier ?????
par exemple f.tif en f.xml ?????
merci
je t'ai donné les infos dans mon message précédent ...
Je t'ai meme filé le code.
Pour changer l'extension :
tu prends le nom de ton fichier en chaine de caractères, et tu fais une substring allant du début de ta chaine et s'arretant 3 caracteres avant la fin de ta chaine ("xml" ) et tu ajoutes "tif" a cette chaine => tu as ton nouveau nom.
puis tu fais Fichier.renameTo(taChaineaveclenouveauNom)
et c'est bon.
et comment tu fais pour recuperer le nom d un fichier dans une chaine de caratere ??
t as pas un lien pour que je vois ca dans > FAQ aussi pour substring je ne connais pas du tout
merci
bonjour
je voudrais savoir si on peut ouvrir un fichier XML à partir d'un code en java pour chercher une balise ????
Salut,
Bon il faut vraiment que tu cherches unminimum avant de poser tes questions là... LA FAQ est ton amie
J'ai vue sur le forum que je pouvais utiliser "XPath" qui permet de récuperer le contenu d une balise.
donc pour que je puisse recuperer "number" du code suivant:
J ai mis dans mon code :Code:xml+="\t<xmlpartNumber>"+ number +"</xmlpartNumber>\n";
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 if(listefichiers2[j].equals(s_2)==true){ System.out.println("s_2 trouve " ); //String path = System.getProperty("user.dir"); //rechercher dans le fichier "xml" la valeur de "<xmlpartNumber>" //On crée une instance de SAXBuilder SAXBuilder sxb = new SAXBuilder(); org.jdom.Document document = sxb.build(new File("listefichiers2[j]")); //On initialise un nouvel élément racine avec l'élément racine du document. racine = document.getRootElement(); //declarer le chemin à chercher. XPath xpa = XPath.newInstance("//xmlpartNumber"); //On applique alors ce cString retour = xpa.valueOf(currentNode); String retour = xpa.valueOf(currentNode); WTPart part = sgUtils.getPart(retour); System.out.println("les valeurs de <xmlpartNumber> :" + part); //load du fichier "tif" à partir du fichier "xml" s3 = new String(listefichiers2[j]); boolean load = loadXML(part, path, s3); //suppression des fichiers "tif" et "xml" file_Name1.delete(); file_Name2.delete(); }
le probleme c est qu il ne reconnais pas org.... et XPath , même si j ai mis les import necessaires :
j ai ca comme erreurs :Code:
1
2
3
4 import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.jdom.xpath.XPath;
est ce que quelqu un a une idée du probleme ??Code:
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
44
45
46
47 sgGenPrintBatch.java:42: package org.jdom does not exist import org.jdom.Element; ^ sgGenPrintBatch.java:43: package org.jdom does not exist import org.jdom.JDOMException; ^ sgGenPrintBatch.java:44: package org.jdom.input does not exist import org.jdom.input.SAXBuilder; ^ sgGenPrintBatch.java:45: package org.jdom.xpath does not exist import org.jdom.xpath.XPath; ^ sgGenPrintBatch.java:468: cannot resolve symbol symbol : class SAXBuilder location: class ext.sogerma.genprintbatch.UnThread SAXBuilder sxb = new SAXBuilder(); ^ sgGenPrintBatch.java:468: cannot resolve symbol symbol : class SAXBuilder location: class ext.sogerma.genprintbatch.UnThread SAXBuilder sxb = new SAXBuilder(); ^ sgGenPrintBatch.java:469: package org.jdom does not exist org.jdom.Document document = sxb.build(new File("listefichiers2[j]")); ^ sgGenPrintBatch.java:471: cannot resolve symbol symbol : variable racine location: class ext.sogerma.genprintbatch.UnThread racine = document.getRootElement(); ^ sgGenPrintBatch.java:473: cannot resolve symbol symbol : class XPath location: class ext.sogerma.genprintbatch.UnThread XPath xpa = XPath.newInstance("//xmlpartNumber"); ^ sgGenPrintBatch.java:473: cannot resolve symbol symbol : variable XPath location: class ext.sogerma.genprintbatch.UnThread XPath xpa = XPath.newInstance("//xmlpartNumber"); ^ sgGenPrintBatch.java:475: cannot resolve symbol symbol : variable currentNode location: class ext.sogerma.genprintbatch.UnThread String retour = xpa.valueOf(currentNode); ^ 11 errors
Relis la FAQ et télécharges l'API pour avoir les librairies que tu tentes d'utiliser ....
Je n ai pas le droit de telecharger quoi que se soit sur la machine sur laquelle je travaille !!!
je ne sais pas s il y a autre chose que XPath??
Bon ben là il faut vraiment que tu lises des tuto de Java... Tu fais ici des imports statiques. Soit tu utilises un IDE (genre eclipse) qui te fait les imports et la complétion, ce qui t'évitera des problèmes de ce genre ou de fautes de frappes dans les noms de tes variables/méthodes (et tu lis des tuto pour apprendre à t'en servir, ca ne manque pas), soit tu utilises un éditeur de texte simple mais tu cherches les complications. De plus tu manques des bases là et surtout de recherche. Quasi toutes tes questions auraient pu être évitées moyennant 5 minutes sur le net. Donc moi là je vais arrêter de t'aider tant que tu ne feras pas plus d'efforts de ton côté
Monsieur George7 je m adresse à toi personnellement , t as pas à juger les gens , depuis longtemps t as pas arrêté de me casser , certes j ai pas de bonnes bases en informatique mais j ai envie d apprendre, et je fais beaucou p d'efforts pour ca, ne crois pas que je m adresse directement au forum sans chercher , tu ne fais que repetter ca alors que t en sais rien du tout , si tu veux pas m aider ne m aide pas et arrêtes d'être méchant , franchement j en ai marre d enttendre des trucs du genre cherches d abord, je passe des heures à chercher avant d ecrire sur le forum mais je me blocque comme n importe quel debutant. je croyais que dans les forums il y a des gens sympa qui s entraide entre eux surtout qu ils donnent un coup de pousse au debutant mais là je commence à en avoir marre des gens comme toi, monsieur qui crois tout savoir.Je pense qu un jour toi aussi t avais besoin d aide.
Ne t'énerve pas, ca sert à rien. Je pense pas t'avoir trop cassé par rapport à ce que je t'ai aidé. Si je dis ca c'est que tu poses des questions dont la réponse est dans la FAQ directement ou alors dans les premières réponses de Google. De plus tes message d'erreur te donnent des infos que tu sembles ignorer, c'est tout.
Je ne dis pas que tu manques de connaissances en info mais en java, ce n'est pas une tare. Apprendre est super, je suis moi même passé par là et j'ai toujours besoin d'aide par moments, et je n'en ai pas honte. Je ne sais pas tout et j'en suis fier, sinon je m'embêtrait vraiment.
Ce qui énerve c'est que tu sembles ne pas avoir cherché ou pas bien cherché, dans la faq tu trouves rapidement les choses que tu demandes. Sur ce tu peux continuer à t'adresser à moi personnellement mais ne le fais plus en public, les gens ne sont pas là pour lire ca.
Si tu as d'autres questions je continuerai de t'aider si j'ai le sentiment que ce n'est pas par manque de recherche de ta part. Relis bien ce post et regarde les réponses qui t'ont été apportée, j'aimerais qu'on soit méchant comme ca avec moi.
bonjour ,
J ai un probleme lors de l execution de mon programme ,
il n arrête pas de boucler avec l exception suivante :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 java.lang.NullPointerException at ext.sogerma.genprintbatch.UnThread.run(sgGenPrintBatch.java:493) s1 :M523P5781-01A.tif s_2 :M523P5781-01A.xml s_2 trouve Erreur lors de la lecture du fichier /opt/ptc/windchill/src/ext/sogerma/genprintbatch/listefichiers2[j] (No such file or directory) java.lang.NullPointerException at ext.sogerma.genprintbatch.UnThread.run(sgGenPrintBatch.java:493) s1 :M523P5781-01A.tif s_2 :M523P5781-01A.xml s_2 trouve Erreur lors de la lecture du fichier /opt/ptc/windchill/src/ext/sogerma/genprintbatch/listefichiers2[j] (No such file or directory) java.lang.NullPointerException at ext.sogerma.genprintbatch.UnThread.run(sgGenPrintBatch.java:493) s1 :M523P5781-01A.tif s_2 :M523P5781-01A.xml s_2 trouve
d'apres ce que j ai compris il trouve le fichier mais pourquoi apres il dit qu il n y a pas de fichier ???
mon programme est le suivant :
merci de m aider svp!!Code:
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 public void run(){ //creation de l'instance du Thread UnThread Thread = new UnThread(); //activation du Thread Thread.start(); while(Thread.isAlive()){ //vérifier si de nouveaux fichiers TIFF générés sont apparus dans le répertoire de génération des fichiers "tif" String repertoire1 = path; //sogerma.tiffiles.path=/PDMLinkShare/pdmdevTifFiles String repertoire2 = pathxml2; File f1 = new File(repertoire1); File f2 = new File(repertoire2); String[] listefichiers1 = f1.list(); String[] listefichiers2 = f2.list(); String s1, s2, s_2, s3; //recuperer les fichiers TIFF et les integrer dans le PDM for (int i = 0; listefichiers1 != null && i < listefichiers1.length; i++) { if(listefichiers1[i].endsWith(".tif")==true){ s1 = new String(listefichiers1[i]); System.out.println("s1 :" + s1); s2 = s1.substring(0, s1.length()-3); s_2 = s2 + "xml"; System.out.println("s_2 :" + s_2); File file_Name1 = new File(s1); //verifier si il existe le fichier "xml" pour loader le fichier tif dans PDMLink for (int j = 0; listefichiers2!= null && j < listefichiers2.length; j++) { File file_Name2 = new File(listefichiers2[j]); if(listefichiers2[j].endsWith(".xml")==true){ if(listefichiers2[j].equals(s_2)==true){ System.out.println("s_2 trouve " ); //String path = System.getProperty("user.dir"); //rechercher dans le fichier "xml" la valeur de "<xmlpartNumber>" org.jdom.Document document = null ; try { //On cree une instance de SAXBuilder SAXBuilder sxb = new SAXBuilder(); //document = sxb.build(new File("listefichiers2[j]")); document = sxb.build(file_Name2); }catch (IOException e) { System.out.println("Erreur lors de la lecture du fichier " + e.getMessage() ); } catch (JDOMException e){ System.out.println("Erreur lors de la construction du fichier JDOM " + e.getMessage() ); e.printStackTrace(); } try { //On initialise un nouvel element racine avec l'element racine du document. Element racine = document.getRootElement(); //declarer le chemin Ã* chercher. XPath xpa = XPath.newInstance("./xmlpartNumber"); //obtenir la valeur retournée du premier noeud répondant à notre requête Element noeudCourant = (Element) xpa.selectSingleNode(racine); String retour = xpa.valueOf(noeudCourant); System.out.println("Valeur : " + retour); WTPart part = sgUtils.getPart(retour); System.out.println("les valeurs de <xmlpartNumber> :" + part); //load du fichier "tif" Ã* partir du fichier "xml" //s3 = new String(listefichiers2[j]); boolean load = loadXML(part, path, listefichiers2[j]); } catch (JDOMException e) { System.out.println("Erreur JDOM " + e.getMessage() ); e.printStackTrace(); } //suppression des fichiers "tif" et "xml" file_Name1.delete(); file_Name2.delete(); } else{ System.out.println("s_2 pas trouve " ); //renommage des fichiers "tif" et "xml" quand ils ne sont pas les mêmes File destination1 = new File(file_Name1 + "_diff"); file_Name1.renameTo(destination1); File destination2 = new File(file_Name2 + "_diff"); file_Name2.renameTo(destination2); } } } } } try{ //faire une pause de 100 pour simuler un traitement System.out.println("Je dors"); Thread.sleep(10000000); } catch(InterruptedException ex){} } }
il trouve le fichier , c'est juste que tu as une variable à null quelque part...
Qu'y a t il dans le fichier sgGenPrintBatch.java à la ligne 493 ??
à la ligne 493 il ya ca :
et la seule variable qui est à null c est :Code:Element racine = document.getRootElement();
je l ai mise à nulle pour la declarer.Code:org.jdom.Document document = null ;
je vois pas ce que je pourrais faire sinon??
8O8O
commetn veux tu accéder à document.getRootElement() si document vaut null ??
mais parceque quand j enleve :
et je declare dans le 1er try : document comme ca :Code:org.jdom.Document document = null ;
j ai un autre probleme c est que document est utilisé dans le deuxieme try du coup il me dit qu il n est pas declarer;et ici c est un probleme de compilation c est plus un probleme d execution :Code:org.jdom.Document document = sxb.build(new File("listefichiers2[j]"));
comment faire dans ce cas ??Code:
1
2
3
4
5
6 sgGenPrintBatch.java:493: cannot resolve symbol symbol : variable document location: class ext.sogerma.genprintbatch.UnThread Element racine = document.getRootElement(); ^ 1 error
il y a aps mal d'incohérences quand même... enfin passons.
Déjà pourquoi utilises tu 2 try/catch ? tu peux tout faire d'un coup tu n'aura plus de problèmes
regarde quand je mets un seul try j ai les erreur suivantes :
et mon code avec un seul try est le suivant :Code:
1
2
3
4 sgGenPrintBatch.java:482: unreported exception java.io.IOException; must be caught or declared to be thrown org.jdom.Document document = sxb.build(file_Name2); ^ 1 error
et c est pour cette raison que je mets 2 try pour que ca compile!!Code:
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 for (int i = 0; listefichiers1 != null && i < listefichiers1.length; i++) { if(listefichiers1[i].endsWith(".tif")==true){ s1 = new String(listefichiers1[i]); System.out.println("s1 :" + s1); s2 = s1.substring(0, s1.length()-3); s_2 = s2 + "xml"; System.out.println("s_2 :" + s_2); File file_Name1 = new File(s1); //verifier si il existe le fichier "xml" pour loader le fichier tif dans PDMLink for (int j = 0; listefichiers2!= null && j < listefichiers2.length; j++) { File file_Name2 = new File(listefichiers2[j]); if(listefichiers2[j].endsWith(".xml")==true){ if(listefichiers2[j].equals(s_2)==true){ System.out.println("s_2 trouve " ); //rechercher dans le fichier "xml" la valeur de "<xmlpartNumber>" //org.jdom.Document document = null ; try { //On cree une instance de SAXBuilder SAXBuilder sxb = new SAXBuilder(); //org.jdom.Document document = sxb.build(new File("listefichiers2[j]")); org.jdom.Document document = sxb.build(file_Name2); /**}catch (IOException e) { System.out.println("Erreur lors de la lecture du fichier " + e.getMessage() ); } catch (JDOMException e){ System.out.println("Erreur lors de la construction du fichier JDOM " + e.getMessage() ); e.printStackTrace(); } try {*/ //On initialise un nouvel element racine avec l'element racine du document. Element racine = document.getRootElement(); //declarer le chemin Ã* chercher. XPath xpa = XPath.newInstance("./xmlpartNumber"); //obtenir la valeur retournée du premier noeud répondant à notre requête Element noeudCourant = (Element) xpa.selectSingleNode(racine); String retour = xpa.valueOf(noeudCourant); System.out.println("Valeur : " + retour); WTPart part = sgUtils.getPart(retour); System.out.println("les valeurs de <xmlpartNumber> :" + part); //load du fichier "tif" Ã* partir du fichier "xml" //s3 = new String(listefichiers2[j]); boolean load = loadXML(part, path, listefichiers2[j]); } catch (JDOMException e) { System.out.println("Erreur JDOM " + e.getMessage() ); e.printStackTrace(); } //suppression des fichiers "tif" et "xml" file_Name1.delete(); file_Name2.delete(); } else{ System.out.println("s_2 pas trouve " ); //renommage des fichiers "tif" et "xml" quand ils ne sont pas les mêmes File destination1 = new File(file_Name1 + "_diff"); file_Name1.renameTo(destination1); File destination2 = new File(file_Name2 + "_diff"); file_Name2.renameTo(destination2); } } } } } try{ //faire une pause de 100 pour simuler un traitement System.out.println("Je dors"); Thread.sleep(10000000); } catch(InterruptedException ex){} } }
si t as une idée de ce qu il faut faire, montres moi stp!!
je suis arrivé à corriger l erreur de la compilation , j ai ajouté un catch avant le derrier voilà le code :
mais comme même lors de l execution j ai la même erreur :Code:
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 for (int j = 0; listefichiers2!= null && j < listefichiers2.length; j++) { File file_Name2 = new File(listefichiers2[j]); if(listefichiers2[j].endsWith(".xml")==true){ if(listefichiers2[j].equals(s_2)==true){ System.out.println("s_2 trouve " ); //rechercher dans le fichier "xml" la valeur de "<xmlpartNumber>" //org.jdom.Document document = null ; try { //On cree une instance de SAXBuilder SAXBuilder sxb = new SAXBuilder(); //org.jdom.Document document = sxb.build(new File("listefichiers2[j]")); org.jdom.Document document = sxb.build(file_Name2); /**}catch (IOException e) { System.out.println("Erreur lors de la lecture du fichier " + e.getMessage() ); } catch (JDOMException e){ System.out.println("Erreur lors de la construction du fichier JDOM " + e.getMessage() ); e.printStackTrace(); } try {*/ //On initialise un nouvel element racine avec l'element racine du document. Element racine = document.getRootElement(); //declarer le chemin Ã* chercher. XPath xpa = XPath.newInstance("./xmlpartNumber"); //obtenir la valeur retournée du premier noeud répondant à notre requête Element noeudCourant = (Element) xpa.selectSingleNode(racine); String retour = xpa.valueOf(noeudCourant); System.out.println("Valeur : " + retour); WTPart part = sgUtils.getPart(retour); System.out.println("les valeurs de <xmlpartNumber> :" + part); //load du fichier "tif" Ã* partir du fichier "xml" //s3 = new String(listefichiers2[j]); boolean load = loadXML(part, path, listefichiers2[j]); }catch (IOException e) { System.out.println("Erreur lors de la lecture du fichier " + e.getMessage() );} catch (JDOMException e) { System.out.println("Erreur JDOM " + e.getMessage() ); e.printStackTrace(); } //suppression des fichiers "tif" et "xml" file_Name1.delete(); file_Name2.delete(); } else{ System.out.println("s_2 pas trouve " ); //renommage des fichiers "tif" et "xml" quand ils ne sont pas les mêmes File destination1 = new File(file_Name1 + "_diff"); file_Name1.renameTo(destination1); File destination2 = new File(file_Name2 + "_diff"); file_Name2.renameTo(destination2); } } } }
Là je ne met aucune valeur nulle ; pkoi il m envoie cette exception et il ne continu pas le programme(il n arrête pas de boucler et de reperter cette exeption).Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Erreur lors de la lecture du fichier /opt/ptc/windchill/src/ext/sogerma/genprintbatch/listefichiers2[j] (No such file or directory) java.lang.NullPointerException at ext.sogerma.genprintbatch.UnThread.run(sgGenPrintBatch.java:493) Erreur lors de la lecture du fichier /opt/ptc/windchill/src/ext/sogerma/genprintbatch/listefichiers2[j] (No such file or directory) java.lang.NullPointerExceptions1 :M523P5781-01A.tif s_2 :M523P5781-01A.xml at ext.sogerma.genprintbatch.UnThread.run(sgGenPrintBatch.java:493)s_2 trouve Erreur lors de la lecture du fichier /opt/ptc/windchill/src/ext/sogerma/genprintbatch/listefichiers2[j] (No such file or directory) java.lang.NullPointerException at ext.sogerma.genprintbatch.UnThread.run(sgGenPrintBatch.java:493) Erreur lors de la lecture du fichier /opt/ptc/windchill/src/ext/sogerma/genprintbatch/listefichiers2[j] (No such file or directory) java.lang.NullPointerException at ext.sogerma.genprintbatch.UnThread.run(sgGenPrintBatch.java:493)
Je comprend plus rien!!!
Ton fichier s'appelle vraiment listefichiers2[j] ????Code:/opt/ptc/windchill/src/ext/sogerma/genprintbatch/listefichiers2[j]
Tu te gourres pas en lui passant le nom ?
a priori le chemin du fichier vient de ton message d'exception et il te sort le nom de la variable .... y'a un souci la non ?