gpt4 book ai didi

Java 捕获带有颜色的过程输出

转载 作者:行者123 更新时间:2023-12-03 11:17:38 25 4
gpt4 key购买 nike

有没有办法从带有颜色格式数据的进程中捕获控制台输出?目前我只捕获文本输出:

ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "mvn dependency:resolve");
// mvn dependency:resolve is an example of a process that outputs color
Process p = builder.start();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)
{
System.out.println(line);
}
但是我找不到捕获此文本颜色数据的方法。彩色文本似乎没有以任何特殊字符或任何东西开头。
我正在将此捕获的文本打印到 UI 以供用户查看此过程的日志,但很难阅读,因此我想从控制台复制颜色。
Here is an example可以在 Go 中完成,但这可以在 Java 中完成吗?
这个应用程序将在 Windows 上运行,但如果它也可以通过从 Shell 或 Bash 读取相同的颜色数据,也可以在 Linux 或 MacOS 上运行,那就太好了。

最佳答案

您面临的问题与 Java 功能并不严格相关。
发生的情况是许多程序检查 stdin 是终端还是管道并以不同的方式生成输出,例如删除颜色格式。有时通过使用特殊选项来强制生成这些颜色格式直接存在解决方法 1 .
如果这在您使用的二进制文件中不可用,那么显然唯一的解决方案是编写您自己的伪 tty,使目标二进制文件认为它与常规 tty 对话。
您可以尝试使用此处提供的代码 2或者你可以看看JetBrains/pty4j看看你是否可以根据你的需要调整它。

关于Java 捕获带有颜色的过程输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45789329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com