如何使用System.setOut()将程序输出重定向至指定磁盘文件?

2026-04-30 16:471阅读0评论SEO基础
  • 内容介绍
  • 相关推荐

本文共计821个文字,预计阅读时间需要4分钟。

如何使用System.setOut()将程序输出重定向至指定磁盘文件?

不能直接传入FileOutputStream,必须包装成PrintStream;否则会抛出NullPointerException或输出异常(如中文乱码、换行丢失等)。Java的System.out是PrintStream类型,System.setOut只接受该类型实例。

实操建议:

  • new PrintStream(new FileOutputStream("output.log")) 构造,避免裸露流操作
  • 务必在构造时显式指定字符集,例如 new PrintStream(new FileOutputStream("output.log"), true, "UTF-8"),否则默认平台编码可能导致中文写入失败
  • 重定向前建议先检查目标目录可写,否则运行时抛 FileNotFoundException
  • 若需追加写入,用 new FileOutputStream("output.log", true)(第二个参数为 true

重定向后如何恢复原始控制台输出

调用 System.setOut() 前必须保存原始 PrintStream,否则无法还原。JVM 启动后 System.out 默认指向控制台,但该引用不可通过反射或静态变量重新获取。

阅读全文

本文共计821个文字,预计阅读时间需要4分钟。

如何使用System.setOut()将程序输出重定向至指定磁盘文件?

不能直接传入FileOutputStream,必须包装成PrintStream;否则会抛出NullPointerException或输出异常(如中文乱码、换行丢失等)。Java的System.out是PrintStream类型,System.setOut只接受该类型实例。

实操建议:

  • new PrintStream(new FileOutputStream("output.log")) 构造,避免裸露流操作
  • 务必在构造时显式指定字符集,例如 new PrintStream(new FileOutputStream("output.log"), true, "UTF-8"),否则默认平台编码可能导致中文写入失败
  • 重定向前建议先检查目标目录可写,否则运行时抛 FileNotFoundException
  • 若需追加写入,用 new FileOutputStream("output.log", true)(第二个参数为 true

重定向后如何恢复原始控制台输出

调用 System.setOut() 前必须保存原始 PrintStream,否则无法还原。JVM 启动后 System.out 默认指向控制台,但该引用不可通过反射或静态变量重新获取。

阅读全文