在print前重定向输出流,重定向后,print输出的所有内容将会同时打印到控制台和写入到同目录下的output.txt文件中(这个txt目录可以自定义)。其中,要定义TeeOutputStream类,用于同时输出到两个流中(控制台和txt文本)。
代码如下:
import java.io.*;
public class PrintAndExportToTxt {
public static void main(String[] args) {
try {
// 创建一个PrintStream对象,用于将输出重定向到文件中
PrintStream printStream = new PrintStream(new FileOutputStream("output.txt"));
// 将System.out的输出重定向到PrintStream中
PrintStream console = System.out;
System.setOut(new PrintStream(new TeeOutputStream(console, printStream)));
// 打印一些内容到控制台上和文件中
System.out.println("Hello, World!");
System.out.println("This is a test.");
// 刷新输出流并关闭PrintStream
System.out.flush();
printStream.close();
System.out.println("内容已导出到文件output.txt中");
} catch (IOException e) {
e.printStackTrace();
}
}
// 实现TeeOutputStream类,用于同时输出到两个流中
public static class TeeOutputStream extends OutputStream {
private OutputStream out1;
private OutputStream out2;
public TeeOutputStream(OutputStream out1, OutputStream out2) {
this.out1 = out1;
this.out2 = out2;
}
@Override
public void write(int b) throws IOException {
out1.write(b);
out2.write(b);
}
}
}