我正在用Java构建一个程序,它使用ANSI转义码使用不同颜色的菜单。就像是
System.out.println("\u001B[36m"+"Menu option"+"\u001B[0m");
问题是我想检查将要执行代码的控制台是否支持使用此代码,因此如果没有,则打印没有代码的替代版本。
它将类似于:
if(console.supportsANSICode){
System.out.println("\u001B[36m"+"Menu option"+"\u001B[0m");
}
else{
System.out.println("Menu option");
}
java中有一个方法可以检查吗?
一个简单的纯Java解决方案:
if (System.console() != null && System.getenv().get("TERM") != null) {
System.out.println("\u001B[36m"+"Menu option"+"\u001B[0m");
} else {
System.out.println("Menu option");
}
第一个术语用于检查是否连接了终端,第二个用于查看是否定义了TERM env var(不在Windows上)。这并不完美,但在我的情况下运作良好。