Avatar billede dennish Nybegynder
24. november 2003 - 20:25 Der er 1 kommentar og
1 løsning

Fange stdout i Java.

Er der nogen der ved om det er muligt at fange en stdout i Java og arbejde videre på den.

Sagen er nemlig den at jeg har et program der kører på en Linux platform. Programmet generer et output til consolen. Dette output skulle jeg gerne catche med min java program så jeg kan arbejde videre på det. Desværre er det ikke nok for mig at bruge en kommando i Linux der laver en fil, for det hele skal ske automatisk og det eneste programmet generer er stdout.
Avatar billede arne_v Ekspert
24. november 2003 - 20:28 #1
Du kan bruge System.setOut metode til at kontrollere hvor out ryger hen !
Avatar billede arne_v Ekspert
24. november 2003 - 20:29 #2
Jeg lavede engang dette her lille eksempel:

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;

public class CaptureOutput {
    public static void main(String[] args) {
        try {
            PrintStream save = System.out;
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            PrintStream pw = new PrintStream(baos);
            System.setOut(pw);
            T t = new T();
            t.start();
            t.join();
            System.setOut(save);
            pw.flush();
            System.out.println("from thread: " + baos.toString());
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

class T extends Thread {
    public void run() {
        System.out.println("Hello world");
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester