Obtenez de l'Invite de Commande de Sortie de Chaîne de caractères En Java

J'ai besoin d'une méthode java qui va lire l'invite de commande de sortie, et le stocker dans une Chaîne de caractères à lire en Java.

C'est ce que j'ai jusqu'à présent mais qui ne fonctionne pas bien.

public void testGetOutput() {
    System.out.println("\n\n****This is the testGetOutput Method!****");
    String s = null;
    String query = "dir " + this.desktop;
    try {
        Runtime runtime = Runtime.getRuntime();
        InputStream input = runtime.exec("cmd /c " + query).getInputStream();
        BufferedInputStream buffer = new BufferedInputStream(input);
        BufferedReader commandResult = new BufferedReader(new InputStreamReader(buffer));
        String line = "";
        try {
            while ((line = commandResult.readLine()) != null) {
                s += line + "\n";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(s);
    } catch (Exception e) {
        e.printStackTrace();
    }
}//end testGetOutput()

Je pense que le problème est lorsque je tente de changer la requête à une commande qui va exécuter les HandBrakeCLI.exe. En regardant mon système lorsque le programme est en cours d'exécution (mais semble avoir mis en pause), il me montre que HandBrakeCLI.exe est en cours d'exécution en vertu d'une fenêtre cmd qui est en cours d'exécution en vertu de mon IDE. Tout ce qui fait sens, mais l'HandBrakeCLI.exe n'est pas sortie, donc je suppose que c'est pourquoi je ne peux pas lire la sortie que de l'entrée de mon programme.

Donc, après que l'arrière-plan. Ma grande question est: Comment puis-je obtenir HandBrakeCLI.exe pour fermer, après c'est fini avec ma requête afin que je puisse obtenir sa sortie?
Juste pour la petite info, la seule différence entre la méthode ci-dessus et l'analyse de DVD méthode que j'ai pour HandBrakeCLI est la variable de requête est différent. Comme dans cet exemple:

String query = "C:\Users\Kent\Desktop\HBCLI\HandBrakeCLI -t --scan -i "C:\Users\Kent\Desktop\General Conference DVDs\Sources74th October 2004\DVD 1"; //this is actually a variable in the DVD object, but here's an example'

Oh, et par la manière, lorsque j'exécute cette requête dans une invite de commande, c'est exactement ce que je veux, de me donner toute la sortie j'ai désespérément envie!

Voici le problème d'origine (je ne suis pas sûr de la façon de soumettre à nouveau une question):

J'ai cherche partout et ne peut pas comprendre cela. Je ne suis pas sûr de ce que j'ai trouvé est même pertinent, de ce que je veux faire. Je n'ai pas beaucoup de code pour cela encore, alors il l'habitude de faire beaucoup pour mettre le code ici et je pense que cela doit être assez simple, donc je vais vous donner quelques captures d'écran ici. Voici donc ma tâche:

  1. Analyser un dossier qui est plein de DVD extrait des dossiers (dossiers Video_TS avec les fichiers VOB etc.) et de stocker ces noms de dossiers comme le titre du DVD.

  2. L'analyse de chaque dossier à l'aide de la HandBrakeCLI et stocker le résultat dans une chaîne.

  3. Regex de la chaîne d'identifier chaque titre, chapitre, et de la langue.

  4. Générer des requêtes de donner en retour à HandBrakeCLI en vrac coder chaque langue dans chaque chapitre dans chaque titre pour chaque DVD (vous pouvez voir pourquoi je veux automatiser cela!)

  5. Stocker ces requêtes dans un *.fichier bat

La seule partie que je ne suis pas sûr à ce sujet est l'étape 2! Je ne peux rien faire d'autre assez facilement. J'ai lu beaucoup de choses sur OutputStreams, mais je n'arrive pas à comprendre comment il fonctionne. J'ai vraiment besoin juste pour obtenir la sortie d'une chaîne de caractères qui je peux regex pour récupérer les trucs dont j'ai besoin. Voici les captures d'écran de ce que j'ai besoin d'intrants et de ce que j'ai besoin de bande à partir de la sortie:

D'entrée à HandBrakeCLI:

Obtenez de l'Invite de Commande de Sortie de Chaîne de caractères En Java

Sortie de numérisation:

Obtenez de l'Invite de Commande de Sortie de Chaîne de caractères En Java

OriginalL'auteur kentcdodds | 2011-10-03