You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java已将控制台输出导出到文件,如何停止导出恢复控制台打印?

解决方案

核心实现逻辑

  • 重定向System.out前先备份原始的控制台输出流引用,避免重定向后丢失原流访问路径
  • 完成文件写入操作后,将System.out重置为备份的原始流即可恢复控制台打印
  • 及时关闭自定义的文件输出流,避免文件资源泄漏

完整代码示例

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;

public class RedirectTest {
    public static void main(String[] args) {
        // 备份原始控制台输出流
        PrintStream originalOut = System.out;
        PrintStream myconsole = null;
        try {
            myconsole = new PrintStream(new File("C:\\one\\Chase-"+formattedDate+".txt"));
            // 重定向输出到文件
            System.setOut(myconsole);
            // 写入内容到文件
            myconsole.print(sb);
        } catch (FileNotFoundException fx) {
            // 异常打印使用原始输出流,避免输出到文件
            originalOut.println(fx);
        } finally {
            // 恢复输出流为控制台,无论是否发生异常都会执行
            System.setOut(originalOut);
            // 关闭文件输出流释放资源
            if (myconsole != null) {
                myconsole.close();
            }
        }
        
        // 此处的打印内容将正常输出到控制台
        System.out.println("已恢复控制台输出");
    }
}

特殊场景处理

如果未提前备份原始输出流,可通过标准输出文件描述符直接恢复控制台输出:

import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.PrintStream;

// 直接重置为控制台输出
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));

内容的提问来源于stack exchange,提问作者Mumin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 16:54:03