当前位置: 首页 > article >正文

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)301;3040100
红色 (Red)311;3141101
绿色 (Green)321;3242102
黄色 (Yellow)331;3343103
蓝色 (Blue)341;3444104
紫色 (Purple)351;3545105
青色 (Cyan)361;3646106
白色 (White)371;3747107

使用示例

以下是 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);
    }
}

运行以上代码后,您将在控制台看到不同颜色和样式的输出。
在这里插入图片描述

常见问题及注意事项

  1. 兼容性问题

    • ANSI 转义码在大多数 Linux 和 macOS 终端中均可正常使用,但 Windows 控制台可能需要开启支持。
    • 在 Windows 中,可以使用 Windows Terminal 或第三方工具(如 Git Bash、Cmder)。
  2. 样式的重置

    • 在每次设置颜色或样式后,需添加 RESET 重置,否则后续输出可能会继承前一个样式。
  3. 编码问题

    • 确保代码文件使用 UTF-8 编码,以避免转义码解析错误。

结语

通过 ConsoleColors 工具类,我们可以轻松地为控制台输出添加颜色和样式,大幅提升日志信息的可读性和分类能力。无论是调试代码还是展示结果,该工具类都能为您提供极大的便利。

希望本篇文章对您有所帮助!如果有任何问题,欢迎留言讨论。


http://www.kler.cn/a/467905.html

相关文章:

  • 极限学习机 (Extreme Learning Machine, ELM) 算法详解与PyTorch实现
  • linux系统(ubuntu,uos等)连接鸿蒙next(mate60)设备
  • 【前端知识】手搓微信小程序
  • Speech Recognition vs. Voice Recognition | 语音识别工作原理 | 模型训练 | 应用
  • 如何提高软件研发效率?
  • AngularJS HTML DOM
  • ChatGPT最新版本“o3”的概要
  • 浙江中医药大学携手云轴科技ZStack荣获“鼎信杯”金鼎实践奖
  • uniapp视频首页页面
  • ts是什么、tsc是什么、tsx是什么、jsx是什么、scss是什么
  • WordPress新安装只安装主题后发现只有首页能打开,其他路由页面都是404,并且Elementor都打不开
  • 腾讯云智能结构化 OCR:驱动多行业数字化转型的核心引擎
  • 全方位沉浸式音响体验——利用汽车结构件作为发声体提升车内音质引言
  • NLP 技术的突破与未来:从词嵌入到 Transformer
  • Android XR:Google在扩展现实领域的第二次起航
  • 五类推理(逻辑推理、概率推理、图推理、基于深度学习的推理)的开源库 (一)
  • 力扣--343.整数拆分
  • RAG(Retrieval-Augmented Generation,检索增强生成)流程
  • 【leetcode100】二叉树的直径
  • 正则表达式在JSON里报错
  • .NET框架用C#实现PDF转HTML
  • 下载linux aarch64版本的htop
  • 对一段已知行情用python中画出K线图~
  • 利用LlamaIndex实现超参数调优自动化
  • 【数据结构】链表链表
  • 若依修改超级管理员admin的密码