java - 检查控制台是否支持 Java 中的 ANSI 转义码

标签 java ansi

我正在用 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 上)。这并不完美,但在我的情况下效果很好。

关于java - 检查控制台是否支持 Java 中的 ANSI 转义码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41057014/

相关文章:

java - 当起始节点不存在时,Talend Neo4j 关系组件会抛出错误

java - 使用 com.google.common.hash 中的 Hashing 类安全吗?

c - 取消初始化整数指针的赋值

mysql - 适用于主要数据库的更新语法

javascript - 有没有办法使用 JavaScript 检查文件编码?

java - Android:相机表面 View 模糊

java - 从命令行运行 netbeans maven 项目

java - 在 Android 上使用 SQLite 时出现 OutOfMemory 异常

c++ - 为什么这段代码不能在 Visual Studio 2010 中编译和运行?

java - 如何使用itext从具有内置编码的pdf中提取PRStream?