// All writes to this print stream are copied to two print streams public class TeeStream extends PrintStream { PrintStream out; public TeeStream(PrintStream out1, PrintStream out2) { super(out1); this.out = out2; } public void write(byte buf[], int off, int len) { try { super.write(buf, off, len); out.write(buf, off, len); } catch (Exception e) { } } public void flush() { super.flush(); out.flush(); } }Here's an example that uses the class: try { // Tee standard output PrintStream out = new PrintStream(new FileOutputStream("out.log")); PrintStream tee = new TeeStream(System.out, out);
System.setOut(tee);
// Tee standard error PrintStream err = new PrintStream(new FileOutputStream("err.log")); tee = new TeeStream(System.err, err);
public class TeeStream extends PrintStream {
PrintStream out;
public TeeStream(PrintStream out1, PrintStream out2) {
super(out1);
this.out = out2;
}
public void write(byte buf[], int off, int len) {
try {
super.write(buf, off, len);
out.write(buf, off, len);
} catch (Exception e) {
}
}
public void flush() {
super.flush();
out.flush();
}
}Here's an example that uses the class:
try {
// Tee standard output
PrintStream out = new PrintStream(new FileOutputStream("out.log"));
PrintStream tee = new TeeStream(System.out, out);
System.setOut(tee);
// Tee standard error
PrintStream err = new PrintStream(new FileOutputStream("err.log"));
tee = new TeeStream(System.err, err);
System.setErr(tee);
} catch (FileNotFoundException e) {
}
// Write to standard output and error and the log files
System.out.println("welcome");
System.err.println("error");
File outFile = new File("d:\\out.txt"); InputStream input = new FileInputStream(file);
OutputStream Out=new FileOutputStream(zipFile); int temp = 0; while ((temp = input.read()) != -1) { Out.write(temp); }
input.close();
Out.close();
File infile = new File("d:\\in.txt");
File outFile = new File("d:\\out.txt");
InputStream input = new FileInputStream(infile);
OutputStream out=new FileOutputStream(outFile);
int temp = 0;
while ((temp = input.read()) != -1) {
out.write(temp);
}
input.close();
out.close();
new PrintStream(
new FileOutputStream("C:\\out.txt")
)
);
System.setIn(
new FileInputStream("C:\\in.txt")
);