1) J'utilise Java pour appeler terminal Linux pour exécuter foo.exe et enregistrer la sortie dans un fichier:Utiliser Java pour appeler le terminal Linux: Comment vider la sortie?
String[] cmd = {"/bin/sh", "-c", "foo >haha.file"};
Runtime.getRuntime().exec(cmd);
2) Le problème est quand je prévois de lire haha.file plus tard dans le code , il n'a pas été encore écrit:
File f=new File("haha.file"); // return true
in = new BufferedReader(new FileReader("haha.file"));
reader=in.readLine();
System.out.println(reader);//return null
3) seulement après que le programme est fait sera le haha.file être écrit. Je sais seulement comment vider les "Ecrivains" mais je ne sais pas comment tirer sur sth. comme ça. Comment puis-je forcer java à écrire le fichier dans le terminal?
Merci à l'avance E.E.
Soyez prudent avec cette approche. Il y a des méchants avec le flux stdout/stderr lors de l'utilisation de exec(). Vous avez vraiment besoin de consommer ASYNCHRONUSUSEMENT les flux de sortie/erreur pendant que waitFor() bloque sinon il ne peut jamais retourner car les tampons stdout/err se remplissent et bloquent les processus bifurqués. Checkout apache commons-exec pour une lib qui résout cela. –