package test;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.io.PrintStream;
import java.io.StringWriter;
public class Main {
public static interface Function {
void execute();
}
public static String capture1(PrintStream ps, Function func)
throws IOException {
PipedOutputStream pos = new PipedOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(
new PipedInputStream(pos)));
StringWriter sw = new StringWriter();
String output = null;
try {
PrintStream old = ps;
System.setOut(new PrintStream(pos));
func.execute();
System.out.flush();
pos.close();
System.setOut(old);
int charsRead;
char[] cbuf = new char[4096];
while ((charsRead = br.read(cbuf, 0, cbuf.length)) != -1) {
sw.write(cbuf, 0, charsRead);
}
output = sw.toString();
}
finally {
br.close();
sw.close();
}
return output;
}
public static String capture2(PrintStream ps, Function func)
throws IOException {
String output = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
PrintStream old = System.out;
System.setOut(new PrintStream(baos));
func.execute();
System.out.flush();
System.setOut(old);
output = baos.toString();
}
finally {
baos.close();
}
return output;
}
public static void main(String[] args) throws Exception {
String output = capture1(System.out, new Function() {
@Override
public void execute() {
System.out.println("Hello World");
System.out.println("Bye World");
}
});
System.out.println(output);
output = capture2(System.out, new Function() {
@Override
public void execute() {
System.out.println("Hello World");
System.out.println("Bye World");
}
});
System.out.println(output);
}
}
Wednesday, October 3, 2012
How to Capture StdOut/StdErr in Java
Subscribe to:
Post Comments (Atom)
Can anyone suggest how to convert the .wav (audio file) to a text file and vice-versa in Java?
ReplyDeleteI want to convert the audio file to a text file in java i.e first the audio file will be played and after it is played it will copy the lyrics into a text file, and vice versa, in java. But, I don't know from where I will start it, so, can anyone tell me how to do that?