控制台彩色输出
今天在看另外一个优秀框架的源码的过程中,我发现了一个奇怪的现象,框架输出的内容居然自带颜色,这引起了我极大的好奇心。
追根溯源,终于找到了 Jansi。Jansi 是一个小型的 ASL 2.0 许可的 Java 库,它允许您使用 ANSI 转义序列来格式化您的控制台输出。
下面分享一下 Jansi 的简单使用和我自己封装方法,以及随机输出颜色的文本的方法封装(这个我又强行一行代码实现了),先来一张效果图
依赖
Gradle
Maven
Demo
根据官方的最佳实践,的确啥也没找到,只有 API Docs,只是简单列罗列,还不如写在源码中。下面是我找到的几个成功的例子:
三种设置颜色和内容的方法,大家去翻源码本质上也是各种封装。这里每一个 ansi 对象都有一个 private final StringBuilder builder;
,如果大家想复用一个 ansi 对象,只要重置这个 private final StringBuilder builder;
属性即可,重置的思路可以借助 Java 反射,言至于此,改天有机会再分享具体实现。
其中 Jansi 支持的几种颜色如下:
封装
下面是我的封装方法,比较简单,就是为了少些几行代码。我放弃了复用 ansi 对象的思路,因为反射执行效率太差了。
拓展
我拓展了一个将字符串里面的字符随机设置颜色(排除黑色,因为我常用的黑色背景)的方法,总体思路就是讲字符串拆成字符数组,然后逐个转换拼接。
第一种方法:
当然我们也可以强行将这些代码写成一行:
用到不少 Lambda 语法,有兴趣的小伙伴可以看看 Lambda 语法,能省不少代码。
欢迎关注 FunTester,Have Fun ~ Tester !
版权声明: 本文为 InfoQ 作者【FunTester】的原创文章。
原文链接:【http://xie.infoq.cn/article/51c9c966f3c5dffb809a48dc5】。文章转载请联系作者。
评论