是否有可能检测到输出的位置 - 终端或管道/文件?

时间:2012-09-05 16:32:28

标签: java scala io jvm

例如,当我编写将文本输出到stdout并使用颜色(通过转义序列)的程序时,如果输出转到其他程序(如less,{{1},我想禁用这些颜色因为颜色代码搞砸了输出。

是否可以从Java进程中执行此操作?

1 个答案:

答案 0 :(得分:2)

我通过以下方式解决了它(描述为here):

如果有一些终端连接到应用程序,

System.console()将返回Console对象,如果您将输出传输到其他应用程序或将其保存到文件,它将返回null

因此它变成了一个简单的检查:

if (System.console() == null) {
  // ... no console, print dull plaintext
} else {
  // we have a console, now we can output colors as well
}

(在Linux Mint 10上测试)