La Capture de la sortie d'un programme externe en JAVA

Je suis en train d'essayer de capturer la sortie d'un programme externe à l'aide de java, mais je ne peux pas.

J'ai le code pour le montrer, mais de ne pas le mettre dans une variable.

Je vais l'utiliser, par exemple, sqlplus pour exécuter mon oracle code "dans exec.sql"
système/orcl)@orcl): utilisateur/mot de passe/nom DB

public static String test_script () {
        String RESULT="";
        String fileName = "@src\\exec.sql";
        String sqlPath = ".";
        String arg1="system/orcl@orcl";
        String sqlCmd = "sqlplus";


        String arg2   = fileName;
        try {
            String line;
            ProcessBuilder pb = new ProcessBuilder(sqlCmd, arg1, arg2);
            Map<String, String> env = pb.environment();
            env.put("VAR1", arg1);
            env.put("VAR2", arg2);
            pb.directory(new File(sqlPath));
            pb.redirectErrorStream(true);
            Process p = pb.start();
          BufferedReader bri = new BufferedReader
            (new InputStreamReader(p.getInputStream()));

          while ((line = bri.readLine()) != null) {

              RESULT+=line;

          }


          System.out.println("Done.");
        }
        catch (Exception err) {
          err.printStackTrace();
        }
 return RESULT;
    }
Ce que vous demandez n'est pas clair. Vous pouvez le voir avec System.out.println(line);, mais RESULT est vide?
Le RÉSULTAT est vide au début, mais dans la boucle while j'ai fait la concaténation --> RESULT+=ligne;
ok mais pouvez-vous voir les lignes imprimées avec System.out.println(line);? Notez également que, parce que vous avez redirigé le flux d'erreur, vous n'avez pas besoin bre - tout sera diffusé à bri.
Shouldnt vous lisez à partir de la outputstream du programme externe? p.getOutputStream()
J'ai corrigé les erreurs

OriginalL'auteur AHméd Net | 2013-01-26