很喜欢的一款开源类库,可以帮你简化每一行代码,推荐给大家 (4)

在实际的开发工作中,其实我更倾向于使用 Guava 的 BiMap,而不是 Hutool 的。这里提一下,主要是我发现了 Hutool 在线文档上的一处错误,提了个 issue(从中可以看出我一颗一丝不苟的心和一双清澈明亮的大眼睛啊)。

很喜欢的一款开源类库,可以帮你简化每一行代码,推荐给大家

13、图片工具

Hutool 封装的 ImgUtil 可以对图片进行缩放、裁剪、转为黑白、加水印等操作。

缩放图片:

ImgUtil.scale(
        FileUtil.file("hutool/wangsan.jpg"),
        FileUtil.file("hutool/wangsan_small.jpg"),
        0.5f
);

裁剪图片:

ImgUtil.cut(
        FileUtil.file("hutool/wangsan.jpg"),
        FileUtil.file("hutool/wangsan_cut.jpg"),
        new Rectangle(200200100100)
);

添加水印:

ImgUtil.pressText(//
        FileUtil.file("hutool/wangsan.jpg"),
        FileUtil.file("hutool/wangsan_logo.jpg"),
        "沉默王二", Color.WHITE,
        new Font("黑体", Font.BOLD, 100),
        0,
        0,
        0.8f
);

趁机让大家欣赏一下二哥帅气的真容。

很喜欢的一款开源类库,可以帮你简化每一行代码,推荐给大家

14、配置文件

众所周知,Java 中广泛应用的配置文件 Properties 存在一个特别大的诟病:不支持中文。每次使用时,如果想存放中文字符,就必须借助 IDE 相关插件才能转为 Unicode 符号,而这种反人类的符号在命令行下根本没法看。

于是,Hutool 的 Setting 运用而生。Setting 除了兼容 Properties 文件格式外,还提供了一些特有功能,这些功能包括:

各种编码方式支持

变量支持

分组支持

先整个配置文件 example.setting,内容如下:

name=沉默王二
age=18

再来读取和更新配置文件:

/**
 * @author 微信搜「沉默王二」,回复关键字 PDF
 */

public class SettingDemo {
    private final static String SETTING = "hutool/example.setting";
    public static void main(String[] args) {
        // 初始化 Setting
        Setting setting = new Setting(SETTING);

        // 读取
        setting.getStr("name""沉默王二");

        // 在配置文件变更时自动加载
        setting.autoLoad(true);

        // 通过代码方式增加键值对
        setting.set("birthday""2020年09月29日");
        setting.store(SETTING);
    }
}
15、日志工厂

Hutool 封装的日志工厂 LogFactory 兼容了各大日志框架,使用起来也非常简便。

/**
 * @author 微信搜「沉默王二」,回复关键字 PDF
 */

public class LogDemo {
    private static final Log log = LogFactory.get();

    public static void main(String[] args) {
        log.debug("难得糊涂");
    }
}

先通过 LogFactory.get() 自动识别引入的日志框架,从而创建对应日志框架的门面 Log 对象,然后调用 debug()、info() 等方法输出日志。

如果不想创建 Log 对象的话,可以使用 StaticLog,顾名思义,一个提供了静态方法的日志类。

StaticLog.info("爽啊 {}.""沉默王二的文章");
16、缓存工具

CacheUtil 是 Hutool 封装的创建缓存的快捷工具类,可以创建不同的缓存对象:

FIFOCache:先入先出,元素不停的加入缓存直到缓存满为止,当缓存满时,清理过期缓存对象,清理后依旧满则删除先入的缓存。

Cache<String, String> fifoCache = CacheUtil.newFIFOCache(3);
fifoCache.put("key1""沉默王一");
fifoCache.put("key2""沉默王二");
fifoCache.put("key3""沉默王三");
fifoCache.put("key4""沉默王四");

// 大小为 3,所以 key3 放入后 key1 被清除
String value1 = fifoCache.get("key1");

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssxjy.html