【问题标题】:How to write console output from System.out to a file如何将 System.out 的控制台输出写入文件
【发布时间】:2018-04-04 16:12:27
【问题描述】:

我有一个通过 SSH 通过 Java 连接到的设备,它监听控制台输入并通过 System.out 打印出值(这部分设置我无法更改)。

我需要检索设备的明文输出并将其存储在一个文件中。来自设备的数据是通过 SSH 发送到 System.out 的简单文本。有没有办法获取该数据并将其保存到文件中?由于设备的限制,我无法更改输出流。

【问题讨论】:

  • 您可以使用 System.setOut 设置自定义 PrintStream 来代替 System.out,然后可能会打印到您可以控制的某种缓冲区(或使用 PipeOutputStream 的管道)。
  • 这有点令人困惑。您正在通过 SSH 连接到设备,但担心 System.out。设备类型? SSH 连接类似于命令行会话还是隧道?当它输出到 system.out 是在“设备”上还是在您的计算机上运行您的进程?
  • 感谢您这么快的回复!让我详细说明一下:这是一个命令行会话。该设备以一种我无法更改的奇怪方式运行,因为它超出了我的工作范围。本质上,设备会监听用户(我)向控制台写入 System.out 的任何内容,然后对其进行解析,并在执行任务后通过 System.out 将输出发布到控制台。我需要将该输出保存到文件中以供以后解析。命令通过 printStream 传递给设备,该 printStream 将命令打印到 System.out 并因此打印到控制台
  • 我无法更改 System.out 的原因是因为有问题的设备直接从控制台解析命令,我无法让它以任何其他方式响应.如果我不向控制台写入命令,设备将无法执行任何任务
  • 您仍然可以将 System.out 更改为将输出写入文件并将输出转发到原始 System.out 的内容。

标签: java networking ssh console output


【解决方案1】:

我能够解决此问题的方法是,在连接到设备之前,将 System.out PrintStream 更改为 FileOutputStream,然后解析此流生成的日志以获取我需要的数据。

【讨论】:

    猜你喜欢
    • 2012-12-18
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多