Bonjour, je travaille sur un programme qui génère régulièrement un fichier XML après avoir lu une base de données.
La problématique qui me concerne est la localisation de ce fichier.
Quand je travaille sous Eclipse: il prend le dossier courant.
Quand je travaille sur le .jar généré en lançant de cette façon
, il prend le dossier courant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2pushd "%~dp0%" java -jar prodchecker.jar
Mais si je double clique sur le .jar, alors il ne prend pas le dossier courant et je ne trouve pas le fichier.
Voici comment je procède :
puis
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 Class class1; URL url = null; URL relativeURL = null; URL relativeURLTemp = null; File outputFile = null; File outputTempFile = null; try { class1 = Class.forName("core.Main"); url = class1.getResource(""); relativeURL = new URL(url, "../output.xml"); relativeURLTemp = new URL(url, "../outputTemp.xml"); outputFile = new File(relativeURLTemp.getPath()); outputTempFile = new File(relativeURL.getPath()); } catch (ClassNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch(MalformedURLException mue){ }
puis (facultatif ici)
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 //write the content into xml file TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer; try { transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(doc_); StreamResult result = new StreamResult(outputTempFile); transformer.transform(source, result); } catch (TransformerConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (TransformerException e) { // TODO Auto-generated catch block e.printStackTrace(); }
Comment faire?
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 try{ InputStream in = new FileInputStream(outputTempFile); //For Overwrite the file. OutputStream out = new FileOutputStream(outputFile); byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0){ out.write(buf, 0, len); } in.close(); out.close(); System.out.println("File copied."); } catch(FileNotFoundException ex){ System.out.println(ex.getMessage() + " in the specified directory."); System.exit(0); } catch(IOException e){ System.out.println(e.getMessage()); } System.out.println("Done"); }
Merci!
Partager