java - 在文件和控制台中显示标准输出(使用 System.setOut(new PrintStream(new File ("output-file.txt"))

标签 java jakarta-ee

我想将标准输出保存到文件中。为此,我使用了
System.setOut(new PrintStream(new File("output-file.txt")));

现在控制台没有任何输出。

        try {
            System.setOut(new PrintStream(new File("output-file.txt")));
        } catch (Exception e) {
             e.printStackTrace();
        }

尽管我使用 stdout 来填充文件,但是否有可能在控制台中显示 stdout?

最佳答案

您可以创建一个带有执行两种写入操作的 OutputStreamPrintWriter

final OutputStream stdOut = System.out;
try {
    System.setOut(new PrintStream(new OutputStream() {
        private PrintStream ps = new PrintStream(new File("output-file.txt"));

        @Override
        public void write(int b) throws IOException {
            ps.write(b);
            stdOut.write(b);
        }

        @Override
        public void flush() throws IOException {
            super.flush();
            ps.flush();
            stdOut.flush();
        }

        @Override
        public void close() throws IOException {
            super.close();
            ps.close();
            // stdOut.close(); // Normally not done
        }
    }));
} catch (Exception e) {
    e.printStackTrace();
}

System.out.println("Hello, world!");

关于java - 在文件和控制台中显示标准输出(使用 System.setOut(new PrintStream(new File ("output-file.txt")),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54126403/

相关文章:

java - 改变油漆的颜色会改变所有圆圈的颜色

java - 如何将 JEE 应用程序连接到 MySQL 数据库?

java - 开发EJB时部署失败

java - 如何附加 VisualVM 并在应用程序启动时立即开始分析?

java - 为什么java编译器不提示这里的歧义?

java - 无法读取使用 DataOutputStream 发送的号码

java - 检查是否有 3 个连续的辅音

java - 在 Ubuntu 上运行 Standalone.sh 时出现 Wildfly NoSuchMethodError

java - 是否可以在运行时手动将消息驱动的 bean 订阅到 JMS 队列/主题?

java - 如何用java知道文件是否损坏(可读)?