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
Drukowanie InputStream Java z procesu
Jest to kod, ale problem mam jest to, że informacje są drukowane tylko raz zakończyć proces.
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();
}
}
});
}
Prąd wyjściowy:
Line 1
Line 2
Line 3
Line 4
Line 5
Jest to poprawne wyjście, ale to jest tylko drukowane jako jeden duży blok kiedy zakończyć proces.
Czy ktoś wie, co to jest problem? Jeśli tak, możesz pomóc mi wyjaśnić, dlaczego tak się dzieje, z góry dziękuję.
Wyjście były buforowane w 'BufferedReader', spróbuj tylko czytanie zawartości z' InputStream' bezpośrednio, czy to sprawia, różnica – MadProgrammer
Zgadzam się z @MadProgrammer, że problem jest prawdopodobnie z buforem. Sugerowałbym jednak ustawienie rozmiaru bufora 'BufferedReader' na 1 za pomocą [jego konstruktora dwóch parametrów] (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
Czy byłoby lepiej używać pracy ByteArrayOutputStream? Jestem zupełnie nowy w strumieniach i to mnie podrażnia XD – Ciphor