4

たとえば、テキストをstdoutに出力し、色を使用するプログラムを作成している場合(エスケープシーケンスを介して)、出力が他のプログラム(less、などgrep)またはファイルに送信される場合は、色コードが混乱するため、これらの色を無効にします。出力。

Javaプロセスからそれを行うことは可能ですか?

4

1 に答える 1

4

次の方法で解決しました(ここで説明します):

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 でテスト済み)

于 2012-09-06T02:56:44.313 に答える