当前位置: 首页 > 面试题库 >

在System.setOut之后写入实际的STDOUT

汪玮
2023-03-14
问题内容

我试图拦截System.out和System.err,但在必要时保持直接写入原始流的能力。

PrintStream ps = System.out;
System.setOut(new MyMagicPrintStream());
ps.println("foo");

不幸的是,System类实现的详细信息意味着在我的示例中,“ foo”被发送到MyMagicPrintStream而不是real stdout

有谁知道如何获得对真实/原始的引用OutputStreams

谢谢。

PS:否则将导致SEO出现StackOverflowError <-。


问题答案:

试试这个:

PrintStream ps = new PrintStream(new FileOutputStream(FileDescriptor.out))


 类似资料:
  • mysql的redolog的写入,是在数据刷盘之前还是之后?

  • 所以我使用Visual Studio Windows窗体创建GUI,以便将数据发送到Arduino。我一直在测试如何在Arduino端接收数据,但似乎找不到关于数据如何发送的解释。我一直在使用发送缓冲区。 信息 Arduino串行监视器读取ASCII字符,但由于我使用GUI与Arduino通信,所以我不确定数据是如何传输的。在Arduino串行监视器中,我输入数据并按enter键。这意味着,如果我

  • 我被CompletableFuture异常处理卡住了。 我的逻辑是发送电子邮件并保存此操作的状态。如果发送电子邮件抛出异常,我需要用异常消息保存状态。 处理器类目前有此代码。它工作正常,但对我来说并不优雅。我们如何摆脱用于在阶段之间共享状态的错误本地字段? 看起来句柄方法应该会有所帮助,但它返回可完成未来的可完成未来

  • 由于Rust相对较新,我已经看到了太多读取和写入文件的方法。许多是某人为他们的博客想出的极其混乱的片段,我发现的99%的示例(即使在Stack Overflow上)来自不再工作的不稳定构建。既然Rust是稳定的,那么什么是用于读取或写入文件的简单、可读、不惊慌的片段呢? 这是我最接近读取文本文件的东西,但它仍然没有编译,尽管我相当确定我已经包含了我应该拥有的所有内容。这是基于我在Google上找到

  • 我正在尝试获取firstOrCreate()调用后在数据库中插入的最后一个ID。我已将代码复制到下面: 如何插入最后一个ID? 我已经研究了其他Laravel请求来获取最后一个插入标识,但我相信这个实例是不同的,因为它们没有使用firstOrcreate()。 提前谢谢。

  • 我正在用它来实现一个模拟来调用我的抽象类。 但我的问题是,我的抽象类有太多的依赖关系是自动连接的。子类是。如果它不是一个抽象类,我会使用@InjectMocks来注入这些模拟依赖项。而是如何将mock添加到我上面给出的实例中。 在此处简化代码版本/ 我的Junit是