2016-10-26 2 views
0

ich diesen Code ausgeführt werden soll erwartet. Stattdessen erhalte ich [email protected] als Ausgabe. Was muss ich hinzufügen, damit ich den Inhalt dieser Datei abrufen kann?ich nicht in der Lage bin zu Ausgabe von Laufzeit exec

+1

sind Sie sich bewusst, was diese tut: *** System.out.println (proc .toString()); *** ?? –

+0

Kannst du die Datei mit reinem Java lesen? Weil ich das vorziehen würde und 'toString' auf Ihrem' Process' zu nennen ist nicht das, was Sie wollen. –

+0

http://stackoverflow.com/questions/3936023/printing-runtime-exec-outputstream-to-console –

Antwort

0

Dies ist, was Sie suchen.

Process proc = Runtime.getRuntime().exec("cat /home/uhf/metrics.sh"); 
String s = null; 
BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream())); 
BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream())); 

// read the output from the command 
System.out.println("Here is the standard output of the command:\n"); 
while ((s = stdInput.readLine()) != null) { 
     System.out.println(s); 
} 

// read any errors from the attempted command 
System.out.println("Here is the standard error of the command (if any):\n"); 
while ((s = stdError.readLine()) != null) { 
    System.out.println(s); 
} 
+0

Wo haben Sie proc im Code –

+0

verwendet, sorry, ich habe meinen Code aktualisiert. Ich habe versehentlich p anstelle von proc beim Initialisieren der zwei BufferedReader-Objekte geschrieben. –

+0

System.out.println ("Hier ist die Standardausgabe des Befehls: \ n"); while ((s = stdInput.readLine())! = Null) { System.out.println (s); Zeichenfolge s1 = s; } System.out.println ("String lesen ------->" + stdInput.readLine()); Zeichenfolge s1 = stdInput.readLine(); Ich habe diesen Code geschrieben, aber wann auch immer er herauskommt, während der String verliert, ist es wert, um das gleiche zu bekommen, was ich tun soll. Ich meine, ich bekomme null Wert, aber ich möchte den Inhalt der Datei. –

0

Sie drucken das Process-Objekt.

den Inhalt des ausgeführten Prozesses erhalten Sie den Eingangsstrom nehmen müssen und diesen Strom an den Leser weitergeben

Process process = Runtime.getRuntime().exec("cat /home/uhf/metrics.sh"); 
    InputStream is = process.getInputStream(); 
    try (BufferedReader br = new BufferedReader(new InputStreamReader(is))) { 
     br.lines().forEach(System.out::println); 
    } 
Verwandte Themen