在Java中捕获标准输出的内容

2024-01-08

我正在调用一个在控制台/标准输出中打印一些字符串的函数。我需要捕获这个字符串。我无法修改正在进行打印的函数,也无法通过继承更改运行时行为。我无法找到任何允许我执行此操作的预定义方法。

JVM 是否存储打印内容的缓冲区?

有谁知道可以帮助我的 Java 方法吗?


您可以通过调用重定向标准输出

System.setOut(myPrintStream);

或者 - 如果您需要在运行时记录它,请将输出通过管道传输到文件:

java MyApplication > log.txt

另一个技巧 - 如果您想重定向并且无法更改代码:实现一个调用您的应用程序并启动该应用程序的快速包装器:

public class RedirectingStarter {
  public static void main(String[] args) {
    System.setOut(new PrintStream(new File("log.txt")));
    com.example.MyApplication.main(args);
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Java中捕获标准输出的内容 的相关文章

随机推荐

  • 链接 pthread 库问题

    我面临着一个解释和理解可能稍微复杂的问题 因为给出整个图片太大且困难 请原谅 考虑以下 Makefile all clients so simulator backup LD PRELOAD home Juggler client clie
  • Gradle 工具 api 获取任务输出

    借助 Gradle 工具 API 我成功获得了一些项目的任务列表GradleProject getTasks 这有点酷 我可以读取任务的名称 描述 组以及是否公开 我想知道是否有可能获得任务输出目录 特别是对于测试或代码覆盖率的内容 即生成
  • 服务器上的自动化 django 接收钩子:用“yes”响应collectstatic

    我正在使用 Github post recieve hook 来运行一个 bash 文件来提取我的两个存储库 bin sh cd public html repo static env i usr bin git pull origin m
  • 如何将 gradle 多项目存储库作为 git 子模块包含在另一个 gradle 项目中

    我正在尝试将 Gradle 多项目存储库作为 git 子模块导入到另一个 Gradle 项目中 这是多项目存储库的结构 MyLibrary lib api api config api repository lib impl impl co
  • Angular Dart 教程第 5 节 - 'self.injector$Injector'

    在 英雄之旅 教程的第 5 节中 main dart包含以下行 最终 InjectorFactory 注入器 self injector Injector 这是拼写错误吗 它在 VSCode 中向我发出警告 我遇到了同样的问题 因为它完成没
  • “存在(从...中选择 1)”这一做法从何而来?

    The 绝大多数人支持 https stackoverflow com questions 424212 performance of sql exists usage variants我个人认为以下说法没有区别 SELECT FROM t
  • MongoDB.service 失败,结果退出代码

    我无法使用命令 sudo systemctl start mongod 启动 mongoDB 我收到以下消息 mongod service MongoDB Database Server Loaded loaded lib systemd
  • Android 无尽列表内存管理

    我通过在 onScrollStateChanged 方法中将更多项目加载到数组列表来实现无限列表视图 如果我实现这个方案来获取超过 100 万个条目 我将向数组列表添加一百万个对象 这是内存密集型的 我可以使用哪些方案来实现高效的内存管理
  • 如何从用户控件调用方法到aspx页面?

    我想从用户控件调用一个方法到aspx页面 我正在尝试 但无法在 aspx 页面中调用该方法 Code 添加VisaUserControl ascx cs public event EventHandler UserControlButton
  • 顶级批处理模式下的 CPU 使用率

    我有一个让我生气的问题 我使用以下命令以批处理模式运行 top top b n 1 问题是我可以在批处理模式下运行 top 100 次 但 CPU 使用率永远不会超过原始值 内存使用量按预期变化 但 CPU 保持不变 如果我同时在不同的窗口
  • 使用 Transact-SQL 查找特定子字符串

    我需要从以下形式的字符串中提取特定的子字符串 foo abc bar def baz ghi 例如 我如何从该字符串中获取 bar 的值 您可以使用字符索引 http msdn microsoft com en us library ms1
  • 关系设计场景:限制子关系

    请考虑以下场景 宠物主人可能有多只猫 也可能有多只狗 有些狗与一些猫有亲缘关系 即它们打架 同一所有者的 以下关系设计不施加此限制 因为不同所有者的猫和狗可能是相关的 有没有办法通过关系设计来施加这种限制 您需要使用识别关系将所有者的 PK
  • 访问 C# 类中的变量是否会从内存中读取整个类?

    我对 C 很陌生 有一个问题困扰了我一段时间 当我学习 C 时 我被告知类不应包含大量变量 因为这样读取变量 或从中调用方法 会很慢 有人告诉我 当我访问 C 类中的变量时 它会从内存中读取整个类以读取变量数据 但这对我来说听起来很奇怪且错
  • 如何使用 7-Zip 从多个 zip 存档中删除文件

    我有一千个 zip 存档 其中都包含我要删除的文件 我可以让 7Zip 从命令行一次删除一个文件 7z d r archive zip pdf 但是我如何将其应用于所有文件 这些文件本身分组在子目录中 尝试这个 for r v in zip
  • Windows Powershell:如何比较两个 CSV 文件并输出仅在两个文件中但不在两个文件中的行

    我有一个文件第一个 csv name surname height city county state zipCode John Doe 120 jefferson Riverside NJ 8075 Jack Yan 220 Phila
  • 在 Eclipse 中使用 Firefox 而不是 IE

    在 Eclipse 中 是否可以使用 Firefox 作为 Eclipse 的内部 Web 浏览器而不是 Internet Explorer 我是一名在 Windows 中使用 Eclipse 的 Web 开发人员 Thanks 内部 We
  • 如何在Mocha中使用console.log语句测试功能?

    假设我有一个函数 function consoleOutput param var newParam param param console log newParam 我如何在 Mocha 中测试该函数是否正常工作 参数将乘以 2 并输出到
  • 在 C++ 中获取应用程序窗口的大小

    如何在 C 中获取 QML ApplicationWindow 的大小 QQmlApplicationEngine engine engine load QUrl QStringLiteral qrc main qml if engine
  • 为 log4net 中类的每个实例创建日志的最佳方法是什么?

    我们有几个长期存在的对象 每个对象都在系统中属于同一类 大约只有 5 或 6 个 它们是与外部系统的连接 我希望每个实例都有自己可以登录的文件 做这个的最好方式是什么 我现在只能看到以编程方式添加记录器作为答案 更新 我想避免使用配置文件
  • 在Java中捕获标准输出的内容

    我正在调用一个在控制台 标准输出中打印一些字符串的函数 我需要捕获这个字符串 我无法修改正在进行打印的函数 也无法通过继承更改运行时行为 我无法找到任何允许我执行此操作的预定义方法 JVM 是否存储打印内容的缓冲区 有谁知道可以帮助我的 J