Bonjour à tous!
Je suis assez desesperée avec Runtime...
Je veux executer depuis Java un programme en C que j'ai crée... Il consiste basiquement en:
printf("Donnez le nom du fichier");
Scanf("%s", nom_du_fichier);
Après ça, le programme s'en charge de generer des documents en Latex. Mais rien d'autre est affiché sur la terminale...
Je me suis mise avec le Runtime, et je suis arrivée a lire un programme basique de type: printf("HelloWorld")... Mais pas un executable comme celui que je veux faire...
Je pense qu'il faudrait faire 2 thread, mais je suis completement perdue... Je vous laise le code que j'ai arrivé a faire. Je vous remercie vraiment beaucoup!
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 //CREATION DU FICHIER .BAT try{ nom_bat=repertoire.concat(nom_du_composant); nom_bat=nom_bat.concat(".bat"); System.out.println(""+nom_bat); File file1=new File(nom_bat); FileOutputStream file1Stream = new FileOutputStream(file1); String[] adresse=new String[1]; adresse[0]="Executable_C.exe"; write(file1Stream,adresse); } catch(IOException ioe){ System.out.println("Could not write file"); } //Envoi de l'instruction a l'executable C System.out.println("Début du programme"); try{ String[] commande = {"cmd.exe","/C", nom_bat}; Process p=Runtime.getRuntime().exec(commande); AfficheurFlux fluxSortie = new AfficheurFlux(p.getInputStream()); AfficheurFlux fluxErreur = new AfficheurFlux(p.getErrorStream()); new Thread(fluxSortie).start(); new Thread(fluxErreur).start(); p.waitFor(); } catch(IOException e){ e.printStackTrace(); } catch(InterruptedException e){ e.printStackTrace(); } System.out.println("Fin du programme"); } class AfficheurFlux implements Runnable { private final InputStream inputStream; AfficheurFlux(InputStream inputStream) { this.inputStream = inputStream; } private BufferedReader getBufferedReader(InputStream is) { return new BufferedReader(new InputStreamReader(is)); } @Override public void run() { BufferedReader br = getBufferedReader(inputStream); String ligne = ""; try { while ((ligne = br.readLine()) != null) { System.out.println(ligne); } } catch (IOException e) { e.printStackTrace(); } } }
Partager