UPDATE: I found a crucial part to why this probably isn't working! I used System.setOut(out); where out is a special PrintStream to a JTextArea
Stampa di un InputStream Java da un processo
Questo è il codice, ma il problema che sto avendo è che l'informazione viene stampato solo una volta finisco il processo.
public Constructor() {
main();
}
private void main() {
btnStart.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
ProcessBuilder builder = new ProcessBuilder("java", textFieldMemory.getText(), "-jar", myJar);
Process process = builder.start();
InputStream inputStream = process.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream), 1);
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
inputStream.close();
bufferedReader.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
});
}
uscita corrente:
Line 1
Line 2
Line 3
Line 4
Line 5
Questa è l'uscita corretta, ma viene soltanto stampata come un grande blocco quando termina il processo.
Qualcuno sa qual è il problema? Se è così puoi aiutarmi a spiegarmi perché questo sta accadendo, grazie in anticipo.
L'uscita è stata tamponata nel 'BufferedReader', provare solo leggendo il contenuto dalla' InputStream' direttamente per vedere se fa una differenza – MadProgrammer
Sono d'accordo con @MadProgrammer che il problema è probabilmente con il buffer. Tuttavia, suggerisco di impostare la dimensione del buffer 'BufferedReader' su 1 con [il suo costruttore di due parametri] (http://docs.oracle.com/javase/6/docs/api/java/io/BufferedReader.html# BufferedReader% 28java.io.Reader,% 20int% 29): 'new BufferedReader (new InputStreamReader (inputStream), 1)' – DaoWen
L'utilizzo di ByteArrayOutputStream funzionerebbe meglio? Sono completamente nuovo agli stream, e questo mi disturba XD – Ciphor