Java 控制台彩色输出工具类详解
Java 控制台彩色输出工具类详解
在 Java 开发中,我们通常使用 System.out.println()
来打印控制台输出,但默认输出是单一颜色,不便于区分不同类型的信息(例如错误、警告、提示)。本篇文章将为您介绍一个简单的工具类 ConsoleColors
,通过 ANSI 转义码为控制台输出添加丰富的颜色效果,从而提升控制台输出的可读性和可维护性。
工具类代码
以下是完整的工具类代码:
/**
* 控制台彩色输出
*
* @author : DolphinHome
* @date : 2022/1/9 15:21
*/
public class ConsoleColors {
// Reset 【重置】
public static final String RESET = "\033[0m"; // Text Reset
// Regular Colors 【常规色彩】
public static final String BLACK = "\033[0;30m"; // BLACK 黑色
public static final String WHITE = "\033[0;37m"; // WHITE 白色
public static final String RED = "\033[0;31m"; // RED 红色
public static final String YELLOW = "\033[0;33m"; // YELLOW 黄色
public static final String GREEN = "\033[0;32m"; // GREEN 绿色
public static final String CYAN = "\033[0;36m"; // CYAN 青色
public static final String BLUE = "\033[0;34m"; // BLUE 蓝色
public static final String PURPLE = "\033[0;35m"; // PURPLE 紫色
// Bold 【加粗】
public static final String BLACK_BOLD = "\033[1;30m"; // BLACK 黑色-加粗
public static final String WHITE_BOLD = "\033[1;37m"; // WHITE 白色-加粗
public static final String RED_BOLD = "\033[1;31m"; // RED 红色-加粗
public static final String YELLOW_BOLD = "\033[1;33m"; // YELLOW 黄色-加粗
public static final String GREEN_BOLD = "\033[1;32m"; // GREEN 绿色-加粗
public static final String CYAN_BOLD = "\033[1;36m"; // CYAN 青色-加粗
public static final String BLUE_BOLD = "\033[1;34m"; // BLUE 蓝色-加粗
public static final String PURPLE_BOLD = "\033[1;35m"; // PURPLE 紫色-加粗
// Underline 【下划线】
public static final String BLACK_UNDERLINED = "\033[4;30m"; // BLACK 黑色-下划线
public static final String WHITE_UNDERLINED = "\033[4;37m"; // WHITE 白色-下划线
public static final String RED_UNDERLINED = "\033[4;31m"; // RED 红色-下划线
public static final String YELLOW_UNDERLINED = "\033[4;33m"; // YELLOW 黄色-下划线
public static final String GREEN_UNDERLINED = "\033[4;32m"; // GREEN 绿色-下划线
public static final String CYAN_UNDERLINED = "\033[4;36m"; // CYAN 青色-下划线
public static final String BLUE_UNDERLINED = "\033[4;34m"; // BLUE 蓝色-下划线
public static final String PURPLE_UNDERLINED = "\033[4;35m"; // PURPLE 紫色-下划线
// Background 【背景色】
public static final String BLACK_BACKGROUND = "\033[40m"; // BLACK 黑色-背景
public static final String WHITE_BACKGROUND = "\033[47m"; // WHITE 白色-背景
public static final String RED_BACKGROUND = "\033[41m"; // RED 红色-背景
public static final String YELLOW_BACKGROUND = "\033[43m"; // YELLOW 黄色-背景
public static final String GREEN_BACKGROUND = "\033[42m"; // GREEN 绿色-背景
public static final String CYAN_BACKGROUND = "\033[46m"; // CYAN 青色-背景
public static final String BLUE_BACKGROUND = "\033[44m"; // BLUE 蓝色-背景
public static final String PURPLE_BACKGROUND = "\033[45m"; // PURPLE 紫色-背景
// High Intensity 【高亮】
public static final String BLACK_BRIGHT = "\033[0;90m"; // BLACK 黑色-高亮
public static final String WHITE_BRIGHT = "\033[0;97m"; // WHITE 白色-高亮
public static final String RED_BRIGHT = "\033[0;91m"; // RED 红色-高亮
public static final String YELLOW_BRIGHT = "\033[0;93m"; // YELLOW 黄色-高亮
public static final String GREEN_BRIGHT = "\033[0;92m"; // GREEN 绿色-高亮
public static final String CYAN_BRIGHT = "\033[0;96m"; // CYAN 青色-高亮
public static final String BLUE_BRIGHT = "\033[0;94m"; // BLUE 蓝色-高亮
public static final String PURPLE_BRIGHT = "\033[0;95m"; // PURPLE 紫色-高亮
// Bold High Intensity 【加粗高亮】
public static final String BLACK_BOLD_BRIGHT = "\033[1;90m"; // BLACK 黑色-加粗-高亮
public static final String WHITE_BOLD_BRIGHT = "\033[1;97m"; // WHITE 白色-加粗-高亮
public static final String RED_BOLD_BRIGHT = "\033[1;91m"; // RED 红色-加粗-高亮
public static final String YELLOW_BOLD_BRIGHT = "\033[1;93m";// YELLOW 黄色-加粗-高亮
public static final String GREEN_BOLD_BRIGHT = "\033[1;92m"; // GREEN 绿色-加粗-高亮
public static final String CYAN_BOLD_BRIGHT = "\033[1;96m"; // CYAN 青色-加粗-高亮
public static final String BLUE_BOLD_BRIGHT = "\033[1;94m"; // BLUE 蓝色-加粗-高亮
public static final String PURPLE_BOLD_BRIGHT = "\033[1;95m";// PURPLE 紫色-加粗-高亮
// High Intensity backgrounds 【背景色高亮】
public static final String BLACK_BACKGROUND_BRIGHT = "\033[0;100m";// BLACK 黑色-高亮-背景
public static final String WHITE_BACKGROUND_BRIGHT = "\033[0;107m"; // WHITE 白色-高亮-背景
public static final String RED_BACKGROUND_BRIGHT = "\033[0;101m";// RED 红色-高亮-背景
public static final String YELLOW_BACKGROUND_BRIGHT = "\033[0;103m";// YELLOW 黄色-高亮-背景
public static final String GREEN_BACKGROUND_BRIGHT = "\033[0;102m";// GREEN 绿色-高亮-背景
public static final String CYAN_BACKGROUND_BRIGHT = "\033[0;106m"; // CYAN 青色-高亮-背景
public static final String BLUE_BACKGROUND_BRIGHT = "\033[0;104m";// BLUE 蓝色-高亮-背景
public static final String PURPLE_BACKGROUND_BRIGHT = "\033[0;105m"; // PURPLE 紫色-高亮-背景
}
ANSI 转义码简介
ANSI 转义码是一种控制终端显示属性的标准方式,可以用来设置文字颜色、背景颜色以及其他效果。
常见格式
- 文本颜色:
\033[0;颜色码m
- 背景颜色:
\033[40~47m
表示普通背景颜色,\033[100~107m
表示高亮背景颜色 - 重置样式:
\033[0m
颜色代码对照表
颜色 | 普通文字 | 加粗文字 | 背景颜色 | 高亮背景 |
---|---|---|---|---|
黑色 (Black) | 30 | 1;30 | 40 | 100 |
红色 (Red) | 31 | 1;31 | 41 | 101 |
绿色 (Green) | 32 | 1;32 | 42 | 102 |
黄色 (Yellow) | 33 | 1;33 | 43 | 103 |
蓝色 (Blue) | 34 | 1;34 | 44 | 104 |
紫色 (Purple) | 35 | 1;35 | 45 | 105 |
青色 (Cyan) | 36 | 1;36 | 46 | 106 |
白色 (White) | 37 | 1;37 | 47 | 107 |
使用示例
以下是 ConsoleColors
工具类的使用示例:
public class Main {
public static void main(String[] args) {
System.out.println(ConsoleColors.RED + "这是一条红色的提示信息" + ConsoleColors.RESET);
System.out.println(ConsoleColors.GREEN_BOLD + "这是一条绿色加粗的成功消息" + ConsoleColors.RESET);
System.out.println(ConsoleColors.YELLOW_BACKGROUND + "这是一条带黄色背景的警告信息" + ConsoleColors.RESET);
}
}
运行以上代码后,您将在控制台看到不同颜色和样式的输出。
常见问题及注意事项
-
兼容性问题:
- ANSI 转义码在大多数 Linux 和 macOS 终端中均可正常使用,但 Windows 控制台可能需要开启支持。
- 在 Windows 中,可以使用 Windows Terminal 或第三方工具(如 Git Bash、Cmder)。
-
样式的重置:
- 在每次设置颜色或样式后,需添加
RESET
重置,否则后续输出可能会继承前一个样式。
- 在每次设置颜色或样式后,需添加
-
编码问题:
- 确保代码文件使用 UTF-8 编码,以避免转义码解析错误。
结语
通过 ConsoleColors
工具类,我们可以轻松地为控制台输出添加颜色和样式,大幅提升日志信息的可读性和分类能力。无论是调试代码还是展示结果,该工具类都能为您提供极大的便利。
希望本篇文章对您有所帮助!如果有任何问题,欢迎留言讨论。